Systems and Methods to Track Regions Visited by Mobile Devices and Detect Changes in Location Patterns based on Integration of Data from Different Sources

ABSTRACT

Systems and methods including computing patterns of visitation to predefined regions by converting coordinates of mobile devices to cell identifiers and searching a database to find matches between cell identifiers representing regions and the cell identifiers of the device locations. Devices having similar visitation patterns are divided into two groups, based on status data of whether or not information about a region has been transmitted to respective users. The visitation patterns after the transmission are compared by a system between the two groups to measure a difference. Identifiers of devices, users, or households are initially provided to the system without the status data to obtain attributes associated individually with the identifiers. In return, the system is provided with the status data associated with the attributes individually for the devices, users, or households but without sufficient information to map the status data individually to the identifiers of the devices, users, or households.

RELATED APPLICATIONS

The present application is a continuation application of U.S. patent application Ser. No. 15/165,983, filed May 26, 2016 and issued as U.S. Pat. No. 9,668,104 on May 30, 2017, the entire disclosure of which application is hereby incorporated herein by reference.

The present application is related to U.S. Pat. No. 9,374,671, issued on Jun. 21, 2016, and U.S. Pat. App. Pub. No. 2015/0348095, published on Dec. 3, 2015, the entire disclosures of which applications are hereby incorporated herein by reference.

FIELD OF THE TECHNOLOGY

At least some embodiments of the disclosure relates to data integration techniques to assemble location dependent data about users from different sources while protecting privacy of the users, where the location dependent data is generated at least in part via computational efficient techniques of determination of regions in which mobile devices of the users are located.

BACKGROUND

A location determination system, such as a Global Positioning System (GPS), allows a mobile device, such as a mobile phone, a smart phone, a personal media player, a GPS receiver, etc., to determine its current location on the earth. The location of the mobile device is typically calculated as a set of coordinates, such as the longitude and latitude coordinates of a point on the surface of the earth.

However, the location of the mobile device in the form of coordinates of a point on the surface of the earth does not provide sufficient information of interest about the location, such as whether the mobile device is within a particular region associated with a set of known properties.

For example, it may be of interest in certain applications to determine whether the location of the mobile device is within the store of a merchant, within the home of the user of the mobile device, within a recreation area, within a commercial district, etc.

For example, U.S. Pat. App. Pub. No. 2014/0012806, published Jan. 9, 2014 and entitled “Location Graph Based Derivation of Attributes”, discusses the generation of a user profile based on mapping the locations of a mobile device to predefined geographical regions and use the attributes associated with the predefined geographical regions to derive and/or augment the attributes of the user profile.

For example, U.S. Pat. App. Pub. No. 2008/0248815, published Oct. 9, 2008 and entitled “Systems and Methods to Target Predictive Location based Content and Track Conversions”, discusses the need to analyze the location of a mobile device to determine the types of businesses that the user of the mobile device typically visits, or visited. When the location of a mobile device is within a predefined distance from either the address of a particular business or a geographic location associated with the business, or within a geometric perimeter of the particular business location, it may be determined that the user of the mobile device was at the particular business.

Ray Casting is a known technology to determine whether a given point is within a polygon represented by a set of vertexes. However, Ray Casting is computational intensive involving floating point number computations.

The Military Grid Reference System (MGRS) is a standard used for locating points on the earth. It uses grid squares of various lengths at different resolutions, such as 10 km, 1 km, 100 m, 10 m, or 1 m, depending on the precision of the coordinates provided. An MGRS coordinate includes a numerical location within a 100,000 meter square, specified as n+n digits, where the first n digits give the easting in meters, and the second n digits give the northing in meters.

The disclosures of the above discussed patent documents are hereby incorporated herein by reference.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.

FIG. 1 shows a system to determine whether a mobile device is within a region having a predetermined geographical boundary according to one embodiment.

FIGS. 2-4 illustrate a grid system used to determine whether a location of a mobile device is within the geographical boundary of a region according to one embodiment.

FIGS. 5-7 illustrate a hierarchical grid system used to determine whether a location of a mobile device is within the geographical boundary of a region according to one embodiment.

FIGS. 8 and 9 show a top level grid and the identification of cells within the grid according to one embodiment.

FIG. 10 shows an intermediate level grid and the identification of cells within the grid according to one embodiment.

FIG. 11 shows the identification of cells within a grid having the finest resolution in a grid hierarchy according to one embodiment.

FIG. 12 shows the method to determine whether a location of a mobile device is within the geographical boundary of a region according to one embodiment.

FIG. 13 illustrates an example of converting the coordinates of a location to an identifier of a cell and converting the identifier of the cell to the coordinates of a vertex of the cell according to one embodiment.

FIG. 14 shows a system configured to map a location of a mobile device to one or more identifications of regions according to one embodiment.

FIG. 15 illustrates a data processing system according to one embodiment.

FIG. 16 shows a method of mapping a location of a mobile device to a region according to one embodiment.

FIG. 17 shows a method to detect differences in location patterns according to one embodiment.

FIG. 18 shows a method to detect differences in location patterns of different mobile devices visiting a predetermined region according to one embodiment.

FIG. 19 shows a method to measure the influence of an event based on differences in location patterns of mobile devices visiting a predetermined region according to one embodiment.

FIG. 20 shows a method to identify mobile devices having similar patterns of visiting a predetermined region according to one embodiment.

FIG. 21 shows a method to identify mobile devices having similar patterns of visiting predetermined regions according to one embodiment.

FIG. 22 shows a method to measure the influence of an event according to one embodiment.

FIG. 23 shows a system to combine the data from different databases to measure the influence of an event with privacy protection according to one embodiment.

FIG. 24 shows an operation to obfuscate attribute data for privacy protection according to one embodiment.

FIG. 25 shows a method to combine data from separate system to measure a change in location patterns according to one embodiment.

DETAILED DESCRIPTION

The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding. However, in certain instances, well known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure are not necessarily references to the same embodiment; and, such references mean at least one.

One embodiment of the disclosure provides a computationally efficient method and system to determine whether a location of the mobile device is within a predetermined geographical boundary of a region and/or to determine, among a plurality of predefined regions, the identity of one or more regions within which the location of the mobile device is positioned.

FIG. 1 shows a system to determine whether a mobile device is within a region having a predetermined geographical boundary according to one embodiment.

In FIG. 1, a location determination system uses the wireless signals (e.g., 179) transmitted to and/or from the mobile device (109) to determine the location (111) of the mobile device (109) on the surface of the earth.

For example, the location determination system may use Global Positioning System (GPS) satellites (e.g., 117) (and/or base stations (e.g., 115)) to provide GPS signals to the mobile device (109). The mobile device (109) is configured to determine the location (111) of the mobile device (109) based on the received GPS signals. In general, multiple GPS satellites (e.g., 117) and/or base stations (e.g., 115) are used to provide the wireless signals (e.g., 179) from different locations for a GPS receiver to determine its locations.

In FIG. 1, the mobile device (109) is configured with a cellular communications transceiver to communicate with the base stations (e.g., 113, 115) of a cellular communications network.

For example, in one embodiment, the mobile device (109) is configured to use signal delays in the cellular communications signals to or from a plurality of cellular base stations (e.g., 113, . . . , 115) to compute the location coordinates of the mobile device (109).

In FIG. 1, a server (187) is configured to communicate with the mobile device (109) via the network (189) and the cellular communications infrastructure (e.g., the base station (113)). The server (187) is connected to a database (181) storing information about the predefined regions (e.g., 101, 103, . . . 105, 107).

For example, the database (181) is configured to store the identifications of a set of cells that are within the boundary of a region (e.g., 101). The server (187) is configured to convert the location (111) of the mobile device (109) to a cell identification and search the identifications of the set of cells representing the region (101) to determine if the cell identification converted from the location (111) of the mobile device (109) is in the set of cell identifications representing the region (101). If the cell identification of the location (111) is found in the set of cell identifications representing the region (101), the location (111) is considered being within the boundary of the region (e.g., 101).

In one embodiment, a hierarchical grid system is used to construct cells that are within the boundary of the region (e.g., 101). Thus, the number of cells within the region (e.g., 101) can be reduced, while the precision of the determination can be selected at a desired level (e.g., 1 meter).

In one embodiment, the identifications of the cells are configured to be signed integer numbers. Thus, any known technologies for searching a given number within a set of signed integer numbers can be used to efficiently determine whether the cell identifier of a location (111) is within the set of cell identifiers of the region (101).

In one embodiment, the conversion of the location coordinates to a cell identifier is configured for improved computation efficiency. The cell identifier is also configured for efficient determination of the resolution of the grid in which the cell is located, the coordinates of the vertexes of the cell, the bounding boxes of the cell, and the identifications of the neighbors of the cells. Details and examples are provided below.

In one embodiment, a given region (e.g., polygon) on earth is represented by a set of cells in a hierarchical, regular grid in a longitude latitude space. In the longitude latitude space, the cells are uniform rectangles/squares at a given resolution; the cell identifies are constructed from the digits of the longitude/latitude coordinates for improved efficiency in conversion between coordinates and cell identifiers. In one embodiment, the resolution levels of the grids correspond to the precision of the longitude/latitude coordinates in terms of the number of digits used to after the decimal point to represent the longitude/latitude coordinates.

At a given resolution in the grid, the identity of the cell that contains a given point identified by a longitude/latitude pair can be computed via simple manipulations of the digits of the longitude/latitude pair, as illustrated in FIG. 13.

FIGS. 2-4 illustrate a grid system used to determine whether a location of a mobile device is within the geographical boundary of a region according to one embodiment.

In FIG. 2, a grid (121) of cells is used to identify an approximation of the region (101) at a given level of resolution of the grid (121). The resolution level corresponds to the size of the cells in the grid (121).

In FIG. 2, the region (101) is represented as a polygon having a set of vertexes (e.g., 123). The set of line segments connecting the neighboring vertexes (e.g., 123) of the region (101) defines the boundary of the region (101).

FIG. 3 illustrates the selection of a set of cells (e.g., 127) that are considered to be within the boundary of the region (101). Various different methods and/or criteria can be used to classify whether a cell is within the boundary of the region (101), especially the cells that are partially in the region (101) and contain a portion of the boundary of the region (101). The disclosure of the present application is not limited to a particular way to identify or classify whether a cell that is within the boundary of the region (101).

For example, a cell may be classified as being with the region (101) when the overlapping common portion between the cell and the region (101) is above a predetermined percentage of the area of the cell.

For example, a cell may be classified as being with the region (101) when a length of one or more segments of the region (101) going through the cell is above a threshold.

For example, the vertexes of the region (101) may be mapped to the nearest grid points to determine an approximation of the boundary of the region (101) that aligns with the grid lines to select the cells that are located within the approximated boundary of the region (101).

FIG. 4 illustrates the determination of the location (111) within the set of cells (131, . . . , 133, . . . , 139) according to one embodiment. In FIG. 4, each of the cells (131, . . . , 133, . . . , 139) represents a portion of the region (101). To determine whether the location (111) is within the boundary of the region (101), the system is configured to determine whether the set of cells (131, . . . , 133, . . . , 139) contains the location (111).

In one embodiment, to efficiently determine whether any of the cells (131, . . . , 133, . . . , 139) contains the location (111), each of the cells (131, . . . , 133, . . . , 139) is assigned a cell identifier. In one embodiment, each of the cell identifier is a signed integer for improved computation efficiency; and the cell identifier is configured in such a way that the coordinates of any location within the cell can be manipulated via a set of predetermined, computationally efficient rules to provide the same cell identifier, as further illustrated in FIGS. 12 and 13.

In FIG. 4, after the coordinates of the location (111) is converted to the cell identifier of the cell (133) that contains the location (111), the system determines whether the location (111) is within the region corresponding to the set of cells (131, . . . , 133, . . . , 139) by searching in the cell identifiers of the set of cells (131, . . . , 133, . . . , 139) representative of the region (101) to find a match to the cell identifier of the cell (133) that is converted from the coordinates of the location (111). If a match is found, the location (111) is determined to be within the region (101); otherwise, the location (111) is determined to be outside of the region (101).

To improve the accuracy in the approximation of the region (101) and computational efficiency, the cells of a hierarchical grid system is used to approximate the region (101). FIGS. 5-7 illustrate a hierarchical grid system used to determine whether a location of a mobile device is within the geographical boundary of a region according to one embodiment.

In FIG. 5, grids of different resolutions are used to identify a set of cells to approximate the region (101). The grids has a predetermined hierarchy, in which the grid lines of a high level grid aligns with some of the grid lines of a low level grid such that the cells of the low level grid subdivide the cells of the high level grid. The grids of different resolutions have different cell sizes.

In general, a grid having a higher resolution and thus smaller cell size can approximate the region (101) in better precision, but uses more cells.

In one embodiment, the cells from the lower resolution grid is used in the interior of the region (101) to reduce the number of cells used; and the cells from the higher resolution grid is used near the boundary of the region (101) to improve precision in using the set of cells to approximately represent the region (101).

For example, in one embodiment, the lowest resolution gird is applied to identify a set of cells to approximate the region (101). The cells in the lowest resolution grid that contain the boundary of the region (101) are split in accordance with the grid of the next resolution level to identify cells in the grid of the next resolution level for improved precision in representing the region (101). The cell splitting process can be repeated for further improved precision using a higher resolution grid.

FIG. 6 illustrates the use of cells from two levels of hierarchical grids to approximate the region (101).

After the set of cells used to approximate the region (101) are identified (e.g., as illustrated FIG. 6), the system is configured to determine whether the location (111) of the mobile device (109) is within the region (101) based on whether any of the set of cells representing the region contains the location (111), in a way as illustrated in FIG. 7.

For example, in one embodiment, each of the cells used in FIG. 7 to represent a part of the region (101) is provided with a cell identifier. The coordinates of the location (111) is mapped to a cell identifier at a given resolution level. The system is configured to search in the set of cell identifiers of region (101) at the corresponding resolution level to determine whether there is a match to the cell identifier as determined from the coordinates of the location (111). If a match in cell identifier is found at any resolution level, the location (111) is determined to be within the region (101) represented by the set of cells; otherwise, the location (111) is determined to be outside the boundary of the region (101).

In one embodiment of FIG. 1, a hierarchical grid system is used to approximate the predefined regions (101, 103, . . . , 105, 106) with cells. Each of the cells is classified/identified as being in one or more of the regions (101, 103, . . . , 105, 106). The database (181) stores the identifiers of the cells in association with the identifies of the respective regions (101, 103, . . . , 105, 106); and the server (187) is configured to compute the identifiers of the cells of different resolutions that contain the location (111) and determine if any of the cell identifiers stored in the database (181) in association with the identifiers of the regions (101, 103, . . . , 105, 106) has the same cell identifier as the location (111). If a matching cell identifier is found, the location (111) of the mobile device (109) is determined to be with the respective region(s) (e.g., 101) associated with the corresponding cell identifier; otherwise, the location (111) is determined to be outside all of the regions (101, 103, . . . , 105, 106) represented by the set of cell identifiers stored in the database (181).

FIGS. 8 and 9 show a top level grid and the identification of cells within the grid according to one embodiment.

In one embodiment, the location (111) of the mobile device (109) is determined to be on the surface of the earth in terms of the longitude and latitude coordinates. In a coordinate system as illustrated in FIG. 8, the longitude coordinates are configured to be within the range of −180 degrees to 180 degrees; and the latitude coordinates are configured to be with the range of −90 degrees to 90 degrees.

In one embodiment, a hierarchical grid system on the surface of the earth is based on a regular grid in the longitude latitude space illustrated in FIG. 9.

In FIG. 9, the cells in the top level grid have a uniform size of 10 degrees in longitude and 10 degrees in latitude. In FIG. 9, the cells are identified by the row identifiers ranging from −9 to −1 and 1 to 9 and column identifiers ranging from 1 to 36.

In FIG. 9, the row and column identifiers are configured in a way to avoid using zero as a row identifier or a column identifier.

In FIG. 9, the row identifier of 1 is assigned to the row of cells between 0 to 10 degrees of latitude; the row identifier of 2 is assigned to the row of cells between 10 to 20 degrees of latitude; etc. The rows of cells between 0 to −90 degrees of latitudes are assigned similar row identifiers with a negative sign. For example, the row identifier of −1 is assigned to the row of cells between 0 to −10 degrees of latitude; the row identifier of −2 is assigned to the row of cells between −10 to −20 degrees of latitude; etc. As a result, the row identifier has a sign and a single digit for the top level cells illustrated in FIG. 9; and the single digit is not zero for any of the rows. Thus, for each location that is inside a cell in the top level grid as illustrated in FIG. 9, the row identifier of the cell containing the location has the same sign as the latitude coordinate of the location and the single digit that equals to 1 plus the tens digit of the latitude coordinate of the location.

In FIG. 9, the column identifier of 1 is assigned to the column of cells having longitude coordinates between −180 to −170 degrees; the column identifier of 2 is assigned to the column of cells having longitude coordinates between −170 to −160 degrees; etc. Thus, for each location that is inside a cell in the top level grid as illustrated in FIG. 9, the column identifier of the cell containing the location has no sign (e.g., the column identifier is always greater than zero) and one or two digits that correspond to adding 18 to a number formed by using the hundreds digit of the longitude as the tens digit and the tens digit of the longitude as the ones digit.

The combination of the row identifier and the column identifier of a cell uniquely identifies the cell within the top level grid as illustrated in FIG. 9. For example, the digits of the column identifier can be appended to the row identifier to generate a signed number that uniquely identifies the cell within the grid illustrated in FIG. 9. For a given cell identifier, the row identifier and the column identifier can be unambiguously deduced from the cell identifier itself, since the row identifier has a signal digit and a sign. The longitude and latitude coordinates of the vertexes of the cell can be computed from the row identifier and the column identifier.

Although FIG. 9 illustrates a preferred way to code the row identifiers and the column identifiers based on the longitude and latitude coordinates of the locations within the cells, alternative coding schemes can be used.

For example, the rows can be coded from 1 to 18 for latitudes from −90 degrees to 90 degrees; and the columns can be coded from 10 to 45 for longitudes from −180 degrees to 180 degrees. Thus, both the row and column identifiers are positive integers, while the column identifiers always have two digits.

For example, the rows can be coded from 11 to 28 for latitudes from −90 degrees to 90 degrees; and the columns can be coded from 11 to 46 for longitudes from −180 degrees to 180 degrees. Thus, both the row and column identifiers are positive integers having two digits.

FIG. 10 shows an intermediate level grid and the identification of cells within the grid according to one embodiment. In FIG. 10, a given cell at a higher level grid (e.g., a cell in the top level grid as illustrated in FIG. 9) is subdivided into 10 rows and 10 columns. The coding of the rows and columns correspond to the measurement directions of the longitude and latitudes coordinates such that the corresponding digits in the longitude and latitudes coordinates at a given precision level can be used directly as the row and column identifiers of the sub-cells within the cell at the higher level grid.

For example, when the cell that is being subdivided into the 10 rows and 10 columns has a size of 10 degrees in longitude and 10 degrees in latitude (e.g., as illustrated in FIG. 9), the row identifier and column identifier of the sub-cells correspond to the ones digit of the latitude and longitude coordinates of the points within the respective sub-cells.

For example, when the cell that is being subdivided into the 10 rows and 10 columns has a size of 1 degree in longitude and 1 degree in latitude, the row identifier and column identifier of the sub-cells correspond to the one-tens digit of the latitude and longitude coordinates of the points within the respective sub-cells.

FIG. 11 shows the identification of cells within a grid having the finest resolution in a grid hierarchy according to one embodiment. In FIG. 11, the row identifiers and column identifiers are padded by 1, in comparison with the row and column coding scheme illustrated in FIG. 10.

In one embodiment, an identifier cell for a given resolution includes sufficient information to identify the corresponding cells in the higher level grid(s) that contains the cell. Thus, a cell identifier uniquely identifies a cell in the entire hierarchical grid without ambiguity.

FIG. 12 shows the method to determine whether a location of a mobile device is within the geographical boundary of a region according to one embodiment.

In FIG. 12, the location (111) of the mobile device (109) is determined in terms of the longitude coordinate (143) and the latitude coordinate (145).

For a given resolution level (147), the longitude coordinate (143) and the latitude coordinate (145) are truncated to generate the column identifier (149) and the row identifier (151). Applying (155) the resolution level (147) includes truncating the longitude coordinate (143) and the latitude coordinate (145) to the corresponding digits of precision to generate the column identifier (149) and the row identifier (151). In one embodiment, the digits corresponding to the top level grid and the bottom level grid at the given resolution are adjusted according to FIGS. 9 and 11.

In FIG. 12, the column identifier (149) and the row identifier (151) are combined to generate the cell identifier (153) of the location (111) of the mobile device at the given resolution level (147).

In one embodiment, the database (181) stores a set of cell identifiers (161, . . . , 163) that are associated with the region (101) defined by a predetermined boundary. The server (187) searches (157) the set of cell identifiers (161, . . . , 163) to find a match with the cell identifier (153). If a match is found, the location (111) of the mobile device (109) is determined to be within the boundary of the region (101).

In one embodiment, the database (181) stores a set of cell identifiers (e.g., 161, . . . , 163, 165, . . . ) associated with respective different regions (e.g., 101, 103, . . . ). When the cell identifier (153) of the location (111) of the mobile device (109) is found to be matching with a particular cell identifier (e.g., 163 or 165), the region (e.g., 101 or 103) associated with the particular cell identifier (e.g., 163 or 165) is determined to be the region in which the mobile device (141) is located.

In one embodiment, when a cell contains the boundary of two regions (e.g., 101 and 103), the cell identifier of the cell can be associated with both regions (e.g., 101 and 103). The system may optionally further determine which region the cell is in based on the coordinates of the vertexes defining the boundary (or other parameters that define the boundary between the regions).

FIG. 13 illustrates an example of converting the coordinates of a location to an identifier of a cell and converting the identifier of the cell to the coordinates of a vertex of the cell according to one embodiment.

In FIG. 13, the location has a latitude coordinate of −51.12345678 and a longitude coordinate of −41.12345678. A resolution at the fifth digit after the decimal point is applied to the coordinates to generate the truncated coordinates (−41.12345, −51.12345). The decimal point is removed to obtain the longitude digits −4112345 and the latitude digits −5112345. Since the length of the equator of the earth is about 40,075 km, the cell size near the equator is about 1.11 meters at the resolution corresponding to the fifth digit.

In accordance with the scheme for the top level grid illustrated in FIG. 9, the tens digit for the latitude coordinate is padded with one (without considering the sign of the latitude); and the hundreds digit and tens digit, including the sign, of the longitude coordinate is padded with 18 to generate the row identifier −6 and the column identifier 14 for the top level grid.

In accordance with FIG. 10, the row identifiers and column identifiers of the sub-cells in the hierarchical grid correspond to the respective latitude digits and longitude digits (1, 1, 2, 3, 4).

In accordance with FIG. 11, the row identifiers and column identifiers of the sub-cells in the bottom hierarchy is padded with 1, if the longitude and/or the latitude coordinates of the location is not exactly on the grid lines of the resolution level (e.g., if the longitude or latitude coordinate has nonzero digits after the fifth digit behind the decimal point). One is not padded at the last digit when the longitude and/or the latitude coordinates of the location is exactly on the grid lines of the resolution level (e.g., if the longitude or latitude coordinate has no nonzero digits after the fifth digit behind the decimal point). According to this padding scheme, in the northern hemisphere locations on the northern edge of a cell are included in the cell but not the locations on the southern edge. In the southern hemisphere, locations on the southern edge of a cell are included in the cell but not the locations on the northern edges. Locations on the eastern edge of a cell are included in the cell, but not the western edge.

Thus, the location (−41.12345678, −51.12345678) has the row and column identifiers −6112346 and 14112346. The digits of the column identifier are appended to the digits of the row identifier to generate the cell identifier −611234614112346.

In FIG. 13, the row and column identifiers can be recovered from the cell identifier. The number of digits in the cell identifier divided by 2 provides the number of leading digits for the row identifier; and the remaining digits are for the column identifier. From the row identifier and column identifiers, the latitude digits and longitude digits can be computed via subtraction of the respective padding. The truncated coordinates can be computed from the latitude digits and longitude digits respectively, which can be used to determine the coordinates of a vertex of the cell as (−41.12345, −51.12345). Based on the resolution of the cell being at 0.00001, the coordinates of other vertexes of the cell can be determined as (−41.12346, −51.12345), (−41.12346, −51.12344), (−41.12345, −51.12344). The bounding box of the cell and the neighboring cells can also be easily identified based on the coordinates.

FIG. 13 illustrates a way to append the digits of the column identifier to the digits of the row identifier to generate the cell identifier. Alternatively, the row identifier and the column identifier can be combined in other ways that can be reversed to derive the row identifier and the column identifier from the cell identifier.

For example, when the top level column identifiers are mapped to the range 11 to 46 to have a fixed number of two digits for the top level column, the column identifier is 2411236. Since there is no ambiguity in the number of digits used to represent the top level column, the top level column identifier (24) can be appended after the top level row identifier (−6), which is then appended with the row and column identifiers of the next level, and so on. Thus, a cell identifier of −6241111223366 can be generated, with the sign then the first three digits representing the top level row and column, and two digits for subsequent next level row and column to identifying the subdivision within the higher level cell.

In some embodiments, the row and column identifiers of the bottom level are not padded in a way illustrated in FIG. 11 to have different ways to account for the locations on grid lines at the lowest level resolution.

FIGS. 9-11 and 13 illustrate a grid hierarchy based on a decimal representation of longitude and latitude coordinates. Alternatively, the grid hierarchy can be constructed in accordance with longitude and latitude coordinates expressed using other bases, such as binary, ternary, quintal, octal, duodecimal, etc. in a similar way.

Further, in some embodiments, the longitude and latitude coordinates may be normalized (e.g., in the standardized data range between 0 to 1); and the grids can be constructed in the space of the normalized longitude and latitude coordinates.

The hierarchical grid can also be extended to a three-dimensional space. For example, a hierarchical grid can be constructed with regular grids in the longitude, latitude, altitude space, or in a mapped or normalized longitude, latitude, and altitude space.

FIG. 14 shows a system configured to map a location of a mobile device to one or more identifications of regions according to one embodiment. In FIG. 14, the mobile device (109) determines the coordinates (171) of its location (111) based on the wireless signals (179) to and/or from a location determination system, such as the Global Positioning System (GPS).

The coordinates (171) are converted to a cell identifier (173) of a cell that contains the location, e.g., in a way as illustrated in FIG. 12 or 13.

In the database (181), a set of cell identifiers are stored in association with region identifiers (185), where each of the cell identifiers is associated with one or more of the respective regions when the respective cell contains at least a portion of the one or more of the respective regions.

In one embodiment, the set of cell identifiers are organized as a cell identifier tree (183) to facilitate the search of a matching identifier.

For example, the cell identifier tree (183) can be constructed as a self-balancing tree for efficient searching of a cell identifier matching the cell identifier (173) generated from the coordinates (171) of the mobile device (109).

In general, any methods to search for an identifier with a set of predetermined identifiers can be used to search for the matching cell identifier (173).

From the association of the cells with the region identifiers (185) in the database, the server (187) determines the identification (175) of the one or more defined regions that are at least partially in the cell identified by the cell identifier (173). Thus, the location (111) of the mobile device (109) is determined to be within the region(s) identified by the identification (175) of the defined region(s).

Similarly, after regions of different sizes and locations are represented via the cells in the hierarchical grid, the system can be configured to efficiently compute overlapping portions of regions via searching for cells having the same identifications.

For example, to determine the approximate overlapping between regions, the percentage of overlapping, the square of overlap, etc., the system is configured to count a number of overlapped cells to determine the overlapping.

In one embodiment, a polygon or any other shape is approximated by a set of rectangular and/or square cell of different sizes in a suitable coordinate system (e.g., in longitude latitude space). Each cell is represented by a single number as identifier. The identifiers of the cells used to approximate the polygon or shape can be organized as a binary tree, a self-balanced tree, a Red/Black Tree, or other structures that are known to provide logarithmic search time to improve the computation efficiency in determining whether a point is within the polygon or shape.

For example, a polygon representing the boundary of United States of America USA on a map may include 2,000 vertexes. The Ray Casting algorithm has O(n) complexity to calculate if a point is within the polygon. When this polygon is approximated via a hierarchical grid system discussed above, the polygon can be represented 700 to 2,000,000 cells in the longitude latitude space, depending on the required precision. When the polygon is represented by 2,000,000 cells and their corresponding identification numbers, searching a matching identifier at the same precision via a binary tree gives log(2,000,000)=21 complexity, which is much less than 2,000. Thus, the present disclosure improves the computational efficiency of identifying a region in which a mobile device is located.

FIG. 16 shows a method of mapping a location of a mobile device to a region according to one embodiment. For example, the method of FIG. 16 can be implemented in the system of FIG. 1 and/or FIG. 14, using the grid system illustrated FIGS. 2-8, and/or the grid system and cell identifier system illustrated in FIGS. 8-13.

In FIG. 16, a computing apparatus is configured to: identify (221) a set of cells in a grid system that are within the predefined boundary of a geographic region; receive (223) a location (111) of a mobile device (109); convert (225) the location (111)to the identifier of a cell that contains the location; and search (227) identifiers of the set of cells to determine if the cell identifier of the location (111) is in the set. If it is determined (228) that the cell identifier of the location (111) is in the set, the computing apparatus determines (229) that the location (111) of the mobile device (109) is in the geographic region.

In one embodiment, the computing apparatus includes at least one of: the database (181) and the server (187).

In one embodiment, the database (181) is configured to store an identifier of a geographical region (101) having a predefined geographical boundary defined by a set of vertexes (e.g., 123) or a set of other parameters, such as a center location and a radius.

The database (181) further stores a set of cell identifiers, each of which identifies a cell that is determined to be within the predefined geographical boundary of the geographical region (101).

After the server (187) receives, from a mobile device (109), a location (111) of the mobile device (109), the server (187) converts a set of coordinates (143, 145) of the location (111) of the mobile device (109) to a cell identifier (153) of a cell that contains the location (111). In some embodiments, the mobile device (109) generates the cell identifier (153) at a desired precision level to represent the location (111) of the mobile device (109).

The server (187) determines whether the location (111) of the mobile device (109) is within the geographical region (101) based on searching the set of cell identifiers to determine if the set has the cell identifier (153) computed from the coordinates (143, 145) of the location (111) of the mobile device (109).

In one embodiment, to convert the set of coordinates (143, 145) of the location (143, 145) to the cell identifier (153), the server (187) (or the mobile device (109)) generates two integers from longitude and latitude coordinates of the location (111) of the mobile device (109) according to a precision level (e.g., resolution level (147), and combine the two integers into the first cell identifier (153) without using a floating point number computation.

In one embodiment, each cell using the in the system to approximate the regions and the locations is a rectangle/square area in a longitude latitude space of locations on the earth. The size of the cell can be unambiguously determined from the cell identifier itself. Further, the longitude and latitude coordinates of corners of the cell identified by the cell identifier can be unambiguously determined from the cell identifier itself.

In one embodiment, the set of cells identified by the set of cell identifiers to approximate one or more regions (e.g., 101, 103, . . . , 105, . . . , 107) has a plurality of different cell sizes that correspond to a plurality of predetermined cell resolution levels. Each of the plurality of predetermined cell resolution levels corresponds to a predetermined precision level of longitudes and latitudes of locations on the earth. For example, each of the plurality of predetermined cell resolution levels corresponds to a precision to a predetermined digit after the decimal point in longitude and latitude coordinates of locations on the earth.

In one embodiment, a cell identifier itself includes sufficient information to determine the resolution level of the cell, the coordinates of the vertexes of the cell, and the identifiers of the neighboring cells, etc.

In one embodiment, the database (181) stores data mapping each cell identify in the set of cell identifiers to at least one region identifier, where the cell contains a least a part of each of the regions identified by the at least one region identifier. The server (187) is configured to search the set of cell identifiers to find a cell identifier that matches with the cell identifier (153) computed from the location (141) and thus determine at least one region identifier associated with the matching cell identifier.

For example, in one embodiment, the set of coordinates of the location (111) includes longitude (143) and latitude (145) of the location (111). To converting the coordinates (143, 145) to the cell identifier (153), the server (187) (or the mobile device (109)) selects digits from the longitude (143) and the latitude (145) of the location (111) in accordance with a cell resolution level (147) and combines the digits selected from the longitude (143) and the latitude (145) of the location (111) into an integer representing the cell identifier (153) of the location (111).

As illustrated in FIG. 13, selecting the digits from the longitude and the latitude includes: selecting digits from integer part of the longitude and a first number of digits from the longitude after the decimal point of the longitude to form an integer representation of the longitude at the cell resolution level; and selecting digits from integer part of the latitude and the same first number of digits from the latitude after the decimal point of the latitude to form an integer representation of the longitude at the cell resolution level.

In one embodiment, to generate the column identifier and row identifier of the location (111), a predetermined number (e.g., one) is added to a digit of the integer representation of the latitude that corresponds to the tens digit of the latitude; and a sign is provided to the integer representation of the latitude according to the sign of the latitude.

In one embodiment, after providing a sign to the integer representation of the longitude according to the sign of the longitude, a predetermined number (e.g., eighteen) is added to digits of the integer representation of the longitude that corresponds to the hundreds digit and tens digit of the longitude, in view of the sign provided to the integer representation of the longitude.

In one embodiment, when the latitude coordinate has a non-zero portion that is discarded during the selection of the latitude digits for the integer representation of the latitude, one is added to the ones digit of the integer representation of the latitude without considering the sign of the integer representation of the latitude. When the longitude coordinate has a non-zero portion that is discarded during the selection of the longitude digits for the integer representation, one is added to the ones digit of the integer representation of the longitude without considering the sign of the integer representation of the longitude.

In one embodiment, after the server (187) receives data representing the predefined geographical boundary of the geographical region, such as the coordinates of the vertexes of a region having a polygon shape, the coordinates of the center and the radius of a region having a circular shape, etc., the server (187) identify, in a hierarchy of cell grids, the set of cell identifiers that are determined to be within the predefined geographical boundary.

In one embodiment, when the set of cells being searched having different resolutions (cell sizes), the location (111) of the mobile device (109) is converted to a plurality of cell identifiers at the corresponding resolutions; and the server (187) is configured to search a match of any of the cell identifiers at the corresponding resolutions computed from the location (111) of the mobile device (109).

For example, the identifiers of the cells of different sizes/resolutions to represent the regions can be organized in a single tree; and the identifiers of the location (111) of the mobile device (109) of corresponding sizes/resolutions can be searched concurrently or one after another to find a match.

For example, the identifiers of the cells of different sizes/resolutions to represent the regions can be organized in separate trees according to cell sizes/resolutions; and the identifiers of the location (111) of the mobile device (109) of corresponding sizes/resolutions can be searched concurrently or one after another in the respective trees for corresponding sizes/resolutions.

In one embodiment, each grid in the hierarchy of cell grids corresponds to a rectangle/square grid in longitude latitude space of locations on the earth with a predetermined resolution level that corresponds to a precision level in a floating point decimal representation of longitude and latitude coordinates.

The server (187) and/or the database (181) can be implemented as a computer apparatus in the form of a data processing system illustrated in FIG. 15.

In one embodiment, the techniques disclosed above are used to map location histories of mobile devices into visitation histories of the mobile devices to one or more pre-defined regions. The visitation patterns of the mobile devices can be used to identify mobile devices having similar behaviors and/or different behaviors in relation with locations. For example, the differences in behaviors following an event between mobile devices that are associated with the event and mobile devices that are not associated with the event can be measured as an influence of the event, if the mobile devices have the same or similar behaviors prior to the event.

For example, the mobile devices initially having similar behavior profiles may have different behaviors after some of the mobile devices are provided with an advertisement and others are not. Thus, the difference can be detected as a measurement of the influence/effectiveness of the advertisement.

FIG. 17 shows a method to detect differences in location patterns according to one embodiment.

In FIG. 17, the server (187) is configured to identify (241) a pair of mobile devices, including a first mobile device associated with an event and a second mobile device not associated with the event, to measure the influence of the event.

For the first mobile device, the server (187) is configured to: receive (243) locations of the first mobile device; convert (245) the locations to one or more cell identifiers; search (247) for regions containing the cell identifiers; and generate (249) first data representing a location pattern based on presence of the first mobile device in the regions.

For the second mobile device, the server (187) is similarly configured to: receive (253) locations of the second mobile device; convert (255) the locations to one or more cell identifiers; search (257) for regions containing the cell identifiers; and generate (259) second data representing a location pattern based on presence of the second mobile device in the regions.

The server (187) identifies (251) a difference of the first data and the second data as a measurement of an influence of the event. Preferably, the pair of mobile devices have similar attributes and/or location patterns prior to the event. Alternatively, the change in location patterns of the first mobile device before and after the event can be compared to the change in location patterns of the second mobile device before and after the event to measure the influence of the event.

For example, the pair of mobile devices may be initially identified to have similar profiles in location patterns and/or other attributes, such as the demographic data of their users, the propensity scores of their users, etc. After the event of an advertisement being transmitted to the user of the first mobile device but not the user of the second mobile device, the difference in the location patterns represents a measurement of the influence/effectiveness of the advertisement in changing location/visitation patterns.

Further, the differences in other attributes associated with the pair of mobile devices can be determined as measurements of the influence/effectiveness of the advertisement with respect to corresponding attributes. Examples of such attributes include the enrollment in a program or service, visitation to certain websites, foot traffic to a store, web traffic to a website, etc.

For example, the event may include an advertisement for a geographical region; and the method may be adapted to measure the effectiveness of the advertisement in changing a pattern of visitation to the geographical region, as illustrated in FIG. 18.

FIG. 18 shows a method to detect differences in location patterns of different mobile devices visiting a predetermined region according to one embodiment.

In FIG. 18, the server (187) identifies (261) a pair of mobile devices, including a first mobile device associated with an event relevant to a predetermined region and a second mobile device not associated with the event, to measure an influence of an event related to the region.

For the first mobile device, the server (187) is configured to: receive (263) locations of the first mobile device; convert (265) the locations to one or more cell identifiers; determine (267) whether the locations are in the region using the techniques discussed above based on searching for matching cell identifiers; and generate (269) first data representing a presence pattern of the first mobile device in the region.

For the second mobile device, the server (187) is similarly configured to: receive (273) locations of the second mobile device; convert (275) the locations to one or more cell identifiers; determine (277) whether the locations are in the region using the techniques discussed above based on searching for matching cell identifiers; and generate (279) second data representing a presence pattern of the second mobile device in the region.

The server (187) identifies (271) a difference of the first data and the second data as a measurement of an influence of the event. Preferably, the pair of mobile devices have similar attributes and/or location patterns prior to the event. Alternatively, the change in location patterns of the first mobile device before and after the event can be compared to the change in location patterns of the second mobile device before and after the event to measure the influence of the event.

In one embodiment, the measured influence is based on the difference between two groups of mobile devices, instead of the different between two mobile devices, to account for the pattern variations in the individual mobile devices.

FIG. 19 shows a method to measure the influence of an event based on differences in location patterns of mobile devices visiting a predetermined region according to one embodiment.

In FIG. 19, the server (187) is identifies (301) two groups of mobile devices, including a first group associated with an event relevant to a predetermined region and a second group not associated with the event, to measure the influence of the event on groups of mobile devices.

The server (187) is configured to: receive (303) locations of mobile devices in the two groups; convert (305) the locations to respective cell identifiers; determine (307) whether the locations are in the region based on whether the region has the respective cell identifiers; generate (309) first data representing a presence pattern of the mobile devices in the first group in the region; and generate (311) second data representing a presence pattern of the mobile devices in the second group in the region.

The server (187) determines (313) a difference between the first data and the second data as a measurement of the influence of the event.

In one embodiment, the server (187) determines the change of presence pattern of each mobile device, the average change of presence pattern in the first group, the average change of presence pattern in the second group, and then the difference between the average changes of presence pattern in the two groups for a measurement of the influence of the event.

In some embodiments, the presence patterns of mobile devices are determined to select groups of mobile devices having similar behaviors, including the presence patterns.

FIG. 20 shows a method to identify mobile devices having similar patterns of visiting a predetermined region according to one embodiment. The mobile devices having similar behaviors can be divided into two groups to measure the influence of an event.

In FIG. 20, the server (187) is configured to: receive (321) locations of mobile devices; convert (323) the locations to respective cell identifiers; determine (325) whether the locations are in a predetermined region based on whether the region has the respective cell identifiers; identify (327) presence patterns of the mobile devices in the region; and identify (329) a subset of the mobile devices based at least in part on similarity in presence patterns.

The server (187) divides (331) the subset of mobile devices into two groups, including a first group for association with an event relevant to a predetermined region and a second group not associated with the event. The method of FIG. 20 can then be used to measure the influence of the event.

In some embodiments, an event may have influence on the visitation patterns of a mobile device in visiting multiple regions.

FIG. 21 shows a method to identify mobile devices having similar patterns of visiting predetermined regions according to one embodiment.

In FIG. 21, the server (187) is configured to: receive (341) locations of mobile devices; convert (343) the locations to respective cell identifiers; identify (345) predetermined regions in which the locations are, based on whether the regions have the respective cell identifiers; identify (347) presence patterns of the mobile devices in the regions; identify (349) a subset of the mobile devices based at least in part on similarity in the presence patterns; and divide (351) the subset of mobile devices into two groups, including a first group for association with an event relevant to a predetermined region and a second group not associated with the event.

In one embodiment, the locations of a mobile device are received as a function of time. Thus, the visitations of the mobile devices are determined as a function of time to determine presence patterns based at least in part on time.

FIG. 22 shows a method to measure the influence of an event according to one embodiment.

In FIG. 22, the server (187) is configured to: identify (361) a set of mobile devices based at least in part on similarity in associated patterns; divide (363) the set of mobile devices into two groups, including a first group for association with an event relevant to a predetermined region and a second group not associated with the event; determine (365) a difference in associated patterns between the mobile devices in the first group and the mobile devices in the second group; and generate (367) a measurement of the influence of the event based on the difference.

In one embodiment, when the set of mobile devices initially having similar but not identical associated patterns prior to the event, the server (187) is configured determine the change of associated patterns for each mobile device before and after the event. The server (187) then determines the difference in the changes of associated patterns in the first and second groups to measure the influence of the event.

For example, the above discussed techniques can be used to measure the advertising effectiveness. In various embodiments, attribute data included in a first user profile may be used to select a second user profile that is substantially similar to the first user profile. The first user profile may include an indication of exposure to advertising content data associated with a location and the second profile may not include such an indication. For example, a first user profile may be associated with a first user that has seen an advertisement for a location and the second user profile may be associated with a second user who has not seen the ad. In various embodiments, propensity score matching and/or other approaches may be used to select a second user profile. For example, a propensity score may be generated based on the attribute data in the first user profile (e.g. demographic data, behavioral data, etc.) and the propensity score may be compared to propensity scores generated for other user profiles to select a second user profile. The second user profile may, for example, be associated with a propensity score that matches (e.g., most closely matches) the propensity score associated with the first user profile.

According to some embodiments, first behavior information (e.g., a change in number/frequency of visits to a location over a period prior to and over a period after seeing an ad related to the location) may be determined based at least in part on an association between the first user profile and a location associated with the advertising content data. Second behavior information may be determined based at least in part on an association between the second user profile and the location. An advertising effectiveness value may be generated based at least in part on the first behavior information and the second behavior information.

In one embodiment, attribute data included in a first user profile may be used to select a second user profile that is substantially similar to the first user profile. In various embodiments, attribute data may include, for example, demographic data, behavioral data, data from third-party sources, psycho-graphic data, location visit frequency patterns, shopping cart spend data (e.g., including similar products and/or categories of products), and/or any other data associated with a user. A first user profile may include a user profile for a user that has been exposed to advertising content associated with a location (e.g., an advertisement to drive foot traffic to the location). In some embodiments, attribute data included in a first user profile may be compared to attribute data associated with one or more other user profiles associated with users who have not been exposed to the advertising content. And a user profile including attributes that are substantially similar to (e.g., matches) the attributes included in the first user profile may be selected. Various approaches may be used to identify (e.g., select) matching user profiles including, for example, propensity score matching, statistical matching approaches, one-to-one matching, and/or any other any other matching technique.

In various embodiments, the first user profile may include a user profile from an exposed/test group, and the second user profile may include a user profile from a control group and/or general population group. The first user profile and second user profile may be used to test (e.g., measure) the effectiveness and/or influence of advertising content data associated with a location (e.g., an advertisement to drive users to a retail location). The first user profile (e.g., the exposed/test group user profile) may include an indication that a user associated with the first user profile has been exposed to advertising content data associated with a location. And the second user profile (e.g., control group user profile, general population user profile) may include an indication that a user associated with the second user profile has not been exposed to the advertising content. In various embodiments, to accurately measure the influence of the advertising content data, the second user profile may be selected such that any attributes, characteristics, biases, confounding variables, and/or other factors that may affect the outcome of the measurement are reduced and/or eliminated. In certain cases, any variables potentially affecting the outcome of the measurement may be reduced by selecting a second user profile that is substantially similar (e.g., as close as possible) to the first user profile.

By way of example, a first user profile may include attribute data including demographic data (e.g., data indicating that the user is female, 30-40 years old, resides in San Francisco, Calif., has a household income of $100,000, etc.), behavioral data (e.g., the user visits a coffee shop three times per week), third party data (e.g., purchased a condo for $200,000 in 2006), psycho-graphic data (e.g., leads a healthy lifestyle, likely to vote for a particular political party, etc.), and other attribute data. Based on the attribute data, a second user profile that matches (e.g., is substantially similar to) the first user profile may be selected. The second user profile may include similar (e.g., matching) attribute data including demographic data (e.g., user is female, 30-40 years old, residing in San Francisco, Calif., household income of $95,000, etc.), behavioral data (e.g., visits the coffee shop four times per week), and/or other attribute data.

In one example matching approach, the attribute data from user profiles may be used in a regression approach (e.g., logistic regression, linear regression, etc.) to generate a model (e.g., generalized linear model (GLM), logit model, discrete choice model, etc.). For example, a model (e.g., generalized linear model (GLM)) may represent a correlation between a dependent variable of whether or not a user has been exposed to advertising content and a set/vector of covariates including attribute data included in the user profiles. The model (e.g., generalized linear model (GLM)) may be used to generate propensity scores for each of the multiple profiles. In some embodiments, a propensity score associated with the first user profile (e.g., associated with a user who has seen an ad) may be used to identify/select a matching (e.g., most closely matching) second user profile (e.g., associated with a user who has not seen the ad). A variety of matching approaches including nearest neighbor, kernel, local linear, caliper, and/or other matching techniques may be used to match the first and second user profiles based, for example, on propensity scores.

In one embodiment, first behavior information may be determined based at least in part on an association between the first user profile and a location associated with advertising content data. In various embodiments, behavior information may include information associated with a user's presence at one or more locations. In some embodiments, a first behavior information may include a number of instances, a number of instances over a period of time, and/or a frequency/rate that a user associated with the first user profile has been determined to be present at the location (e.g., visited the location). For example, a user may be determined to be present at a location based on location data (e.g., latitude/longitude and/or other location identifying information) received from a mobile device associated with the user. In certain cases, the location data may be received in connection with an advertisement request, a WiFi login page, marketing opportunity within a mobile application, entering a geo-fence, a deal and/or opportunity associated with a mobile device, etc. In various embodiments, location data received from a user device may be mapped to one or more defined locations. And based on a mapping of location data to a location associated with advertising content data, a user may be determined to be present at that location. When a user is determined to be present at a location, a user profile associated with that user may be updated to include information (e.g., behavioral information) associated with the user's presence at the location. For example, the user profile may be updated to include the location, a time (e.g., time/day stamp) of presence, duration of presence (e.g., five minutes), and/or other information related to the user's presence at the location. This information may be used to determine behavior information associated with the user profile and the location.

According to various embodiments, behavior information may include a number of times that and/or frequency with which a user associated with a user profile has been present at a location prior to and/or after being exposed to a digital advertisement. For example, a user associated with a first user profile may receive a digital advertisement including advertising content data associated with a location at certain time (e.g., a time (t0), a date, etc.). The time at which a user is exposed to advertising content data may include an advertising exposure time (e.g., time of exposure). In various embodiments, a user may have been exposed to advertising content data multiple times and the advertising exposure time may include the time of first exposure, time of last exposure, an average/median time over a period of multiple exposures, and/or any other time.

In some embodiments, behavior information associated with a first user profile may include a number of times a first user visited the location over a period of time (e.g., one week, three days, etc.) prior to exposure to advertising content data (e.g., viewing an ad). The period prior to exposure may include, for example, a look-back period. The look-back period may include any period of time (e.g., a predefined period, arbitrary period, etc.). A number, frequency, and/or rate at which a user visits a location during the look-back period may include a natural visit frequency/rate. A natural visit rate may represent a rate at which a user visits a location in the absence of exposure to advertising content (e.g., of the user's own volition, uninfluenced by advertising content, etc.).

In various embodiments, behavior information associated with the first user profile may include a number of times the user visited the location over a period of time after the time of exposure to the advertising content data (e.g., viewing the ad). The period of time after advertising exposure may include a look-forward period, and the look-forward period may be selected/determined in a manner similar to the look-back period. In certain cases, the look-forward period, however, may be selected to be substantially different than the look-back period. In another example, behavior information may include a frequency (e.g., one time per day, three times per week, etc.) at which the user visited the location during the look-forward period after exposure to the advertising content.

In some embodiments, behavior information may include a difference between a natural visit rate (e.g., a number of times and/or frequency at which a user was at the location during a period of time (e.g., a look-back period) prior to exposure to the advertising content data) and a number of times and/or frequency at which the user was at the location during a period of time after exposure (e.g., a look-forward period). The first behavior information may, for example, include value(s) quantifying an increase, decrease, and/or lack of change of the first user's behavior relative to the location (e.g., presence at the location) prior to and after seeing an advertisement. In various embodiments, an increase in presence at a location after viewing advertising content may indicate that the advertising content was successful in influencing the behavior of the user.

In various embodiments, behavior information may be determined based on location data from multiple mobile devices. For example, a user may be present at a location on a first day as determined by location information from a first device. After the first day, the user may replace the first device with a second device. Subsequently the user may be determined to be present at the location based on location data from the second device. In this case, location information received from both devices may be included in a user profile for the user, and behavior information may be determined based on location data from both devices that is included in the user profile.

In one embodiment, second behavior information may be determined based at least in part on an association between the second user profile and the location. In various embodiments, the second behavior information may include a number of instances, a number of instances over a period of time, and/or a frequency that a user associated with the second user profile (e.g., a control group profile) has been determined to be present at the location (e.g., visited the location).

In various embodiments, the second behavior information may include a change, if any, between the second user's visit frequency over a period (e.g., a look-back period) prior to a point in time as compared with the second user's visit frequency over a period (e.g., a look-forward period) after the point in time. The point in time (e.g., a reference time) may include, for example, the time at which the first user was exposed to the advertising content, a time relative to the time at which the first user was exposed to the advertising content, an arbitrary time, a time selected to ensure a proper comparison with the first behavior information, and/or another time.

In one embodiment, an advertising effectiveness value (e.g., a value representing advertising effectiveness, advertising effectiveness indicator) may be generated based at least in part on the first behavior information and the second behavior information. In some embodiments, an advertising effectiveness value may include number(s), value(s), percentage(s), metric(s) (e.g., a return on investment (ROI) metric, key performance indicator (KPI)), and/or any other data. The advertising effectiveness value may represent a change in number of visits (e.g., increase/lift in foot traffic) to a location as a result of exposure to the advertising content data.

In various embodiments, an advertising effectiveness value may be calculated/generated based on the first and second behavior information. In some embodiments, the advertising effectiveness value may be generated based on a comparison between a change in behavior from a time (e.g., a first time, a series of times, etc.) a first user sees an ad relative to their natural visit rate and a change in behavior of a second user who did not see the ad at the same time (e.g., an absolute same time, relative same time, etc.). Stated another way, the advertising effectiveness value may be generated based on a comparison of the first behavior information associated with a first user who saw an ad related to a location and second behavior information associated with a second user who did not see the ad. As discussed above, the first behavior information may include a change in a first user's visit behavior after exposure to advertising content relative to their natural visit rate. In other words, the first behavior information may be calculated based on a comparison (e.g., difference, change, etc.) of a first user's visit frequency to a location over a period of time (e.g., a look-back period) prior to exposure to advertising content related to the location and the user's visit frequency over a period after exposure (e.g., a look-forward period) to the advertising content. A second behavior information may include a change in behavior of a second user, who was not exposed to advertising content, as measured by a comparison of the second user's visit frequency to the location over a period (e.g., look-back period) prior to a certain time (e.g., the time when the first user saw the ad, a time relative to the time the first user saw the ad, an arbitrary time, etc.) and the second user's visit frequency over a period (e.g., look-forward period) after that time. The comparison of the first behavior information and second behavior information may be used to generate an incremental lift (e.g., advertising effectiveness value, which can be positive, negative, and/or zero) associated with the advertising content.

By way of example, first behavior information may indicate that a first user visited a coffee shop four times in the two weeks (e.g., a look-back period) prior to exposure to an ad for the coffee shop (e.g., an ad for a free coffee at the shop displayed to the first user on their mobile device). This visit rate over the look-back period (four times in two weeks (i.e., two times per week)) may include a natural visit rate for the first user. The first behavior information may also indicate that the first user visited the coffee shop four times in the week following exposure to the advertisement (e.g., a look-forward period). A second user profile may be matched to the first user profile using the matching techniques discussed herein. The second user may be a user with similar attributes to the first user. Second behavior information may indicate that the second user visited the coffee shop three times over the two weeks (e.g., a look-back period) prior to a point in time (e.g., the time the first user was exposed to the ad, a reference time, etc.) and two times in the week after that point in time. The advertising effectiveness value may be calculated based on the first behavior information and second behavior information. In one example, the advertising effectiveness value may include a comparison between a change in the first user's visit frequency prior to and after ad exposure time (e.g., four visits per week during the look-forward period versus two visits per week during the look-back period or a change/increase of two visits per week) and a change in the second user's visit frequency prior to and after the point in time (e.g., two times per week during the look-forward period and 1.5 times per week during the look-back period or a change of 0.5 visits per week).

In various embodiments, the process of generating advertising effectiveness values may be repeated for multiple pairs of users (e.g., associated with a location). And the multiple advertising effectiveness values may be aggregated (e.g., summed up, added together) to generate an aggregate advertising effectiveness value as discussed in detail below. An aggregate advertising effectiveness value including one or more advertising effectiveness values may include a location conversion index (LCI). In various embodiments, a group of users may be selected to determine an effectiveness/influence of advertising content (e.g., in driving users to a retail location). The group of users may, for example, be related to the location in some way (e.g., each user may have visited the location over a period of time, the users may have similar demographic attributes, etc.). The group of users may be divided into subgroups including an exposed subgroup (e.g., test subgroup) of users that have been exposed to the advertising content data and control subgroup including users not exposed to the advertising content data. Using the techniques discussed herein user profiles from the exposed subgroup may be paired to user profiles from the control subgroup and/or a general population subgroup. And advertising effectiveness values may be generated for each pairing of users, and the advertising effectiveness values may be aggregated (e.g., summed up) to generate an aggregate advertising effectiveness value. In various embodiments, the process of generating advertising effectiveness values may be performed iteratively across many different user profiles.

In some embodiments, the process of generating advertising effectiveness values may be repeated for multiple types of advertising content. For example, advertising effectiveness values may be generated for multiple versions of advertising content data.

In various embodiments, a user profile may include, for example, demographic data (e.g., household income, residence, value of home(s), occupation, work location, age, gender), behavioral data, data from third party data sources (e.g., property records, social network profile information, etc.), mobile device data (e.g., a list of applications on a device), psycho-graphic data, location visit frequency patterns, shopping cart spend data (e.g., including similar products and/or categories of products), and/or any other data associated with a user.

In some embodiments, behavioral attributes may be derived, for example, from a user's past locations (e.g., location pattern(s)), prior actions, and/or other data. For example, a user (e.g., associated with user profile) may have been determined to be at a location based on a location data received, for example, along with a mobile advertising request (e.g., from the user's mobile device). The location data may be mapped to a business, place of interest, zip+4 code, and/or other location. The mapped location data may be used to update a location pattern in the user's profile. The location patterns, behavior attributes, and/or other location-related information may be included in a location graph in, for example, the user's profile.

In some embodiments, demographic, behavioral, and/or other attributes associated with the business, place of interest, etc. to which a user's location has been mapped may be included in a user profile associated with that user. For example, a business (e.g., location) may be associated with demographic, behavioral, and/or other attributes. And as a result of a user's detected presence at the business, behavioral and/or other attributes associated with the business may be attributed to the user (e.g., added to a user profile associated with the user). In certain cases, attributes added to a user profile may be confirmed to be correct or incorrect based on other information (e.g., attributes associated with other locations the same user has visited, information from third party data sources, a user's device, etc.).

In some embodiments, an advertising effectiveness platform/service residing on one or more servers generates advertising effectiveness values (e.g., advertising effective index(es), location conversion index(es)/values, etc.) based on information derived from one or more user profiles. The advertising effectiveness service may query, mine and/or otherwise process user profile information stored in the user profile data store. For example, user profile information may be selected from the user profile data store and behavior information may be determined based on the selected user profile information. Advertising effectiveness values (e.g., generated based on the behavior information) may be stored in an advertising effectiveness data store. In various embodiments, an advertising provider may use the advertising effectiveness service to measure the effectiveness (e.g., influence, value, ROI, etc.) of an advertising campaign.

In one embodiment, an advertiser, advertisement provider, advertisement platform, and/or other entity may seek to determine an effectiveness of an advertising campaign associated with a retail location (e.g., an advertisement associated with a retail location). A first user may be selected based on a determination that the first user has been served advertising content associated with the campaign, the first user has visited the location prior to being served advertising content, and/or other criteria. In various embodiments, attribute data associated with a first user (e.g., included in a first user profile) may be used to select a second user. For example, location attribute data associated with the first user may indicate that the first user is a female, age 20-30, and employed at a technology firm. The location attribute data may also indicate that the first user visited the retail location (e.g., a fashion retailer) four times in the month prior to viewing an advertisement for the retail location. This natural visit frequency prior to being served the advertising content may include normal visits, unaided visits, and/or other types of visits to the retail location. Based on the first user's attribute data, a second user may be selected. In various embodiments, the second user may be selected using attribute-based matching, propensity score matching, and/or other matching approaches. The second user may, for example, include a user most similar (e.g., in demographic, behavioral, and/or other attributes; propensity score; and/or other metrics) to the first user. The second user may be selected based on a determination that the second user has not been exposed to the advertising content associated with the retail location and/or any advertising content associated with the retail location. In this example, a second user who is a female, age 20-30, employed at a law firm and visits the retail location three times per month may be selected. Whereas, another user who is a male, aged 40-50, employed as a doctor, and visits the retail location two times per quarter may not be selected as a similar user. The user may, however, be selected as a randomly-selected user as discussed below.

In various embodiments, first behavior information may be determined. In certain cases, the first behavior information may represent a comparison of a number of visits prior to and after the first user has been exposed to the advertising content (e.g., has viewed an ad, is presumed to have viewed an) associated with the retail location. According to some embodiments, second behavior information may be determined. In certain cases, the second behavior information may represent a number of times the second user visits the retail location prior to and after a certain point in time (e.g., the time the first user was exposed to the advertising content, another time, etc.). In various embodiments, an advertising effectiveness value may be generated based on the first behavior information associated with the first user and the second behavior information associated with second user. In various embodiments, the advertising effectiveness value may quantify/represent the influence of the advertising content data associated with the location.

According to some embodiments, an advertising effectiveness value may be generated based on a comparison of behavior information associated with the first user and behavior information associated with a randomly-selected user (e.g., a user from the general population). In various embodiments, a randomly-selected user may be selected based on a determination that the user is associated with the location (e.g., has visited the location over a period of time). It may be determined, for example, that the user has visited (360) the retail location; however, demographic data associated with user may not be similar to the demographic data associated with the first user. In various embodiments, an advertising effectiveness value may be generated based the behavior information associated with the first user and behavior information associated with the randomly-selected user using the approaches discussed herein. Generating an advertising effectiveness value based on a comparison of the behavior information associated with the first user and a randomly-selected user may provide additional insight into the effectiveness/influence of an advertisement.

In one embodiment, it may be determined that a user profile includes an indication of exposure to advertising content data and/or engagement to/with advertising content data. For example, an indication of exposure to advertising content data may include a record indicating that a digital advertisement including advertising content data associated with a location has been presented to a user. The indication may be generated, for example, when a digital advertisement is output to a user on a device (e.g., a mobile device, computer, smart television, wearable computer, etc.). An indication of engagement to/with advertising content data may include a record indicating that a user has engaged with advertising content by, for example, clicking on an ad, expanding an ad, engaging with an via voice input, and/or other records. In various embodiments, an indication of exposure/engagement may be associated with user profile and not a specific device. For example, a device (e.g., a home computer) on which the user was presented advertising content data and/or interacted with advertising content may be different than a device detected to be at a location of interest. In some embodiments, an indication of exposure/engagement may be generated when it is determined that a user has viewed and/or is likely to have viewed an advertisement presented in a non-digital medium (e.g., a print ad, mailed advertisement, etc.).

In one embodiment, the user profile may be selected based on the determination that the user associated with the profile has been exposed/engaged (e.g., is presumed to have viewed) to and/or engaged with the advertising content data. In various embodiments, a first user profile (e.g., test user profile) may be selected as a test user profile (e.g., for comparison with a control user profile as discussed herein) based on the determination that the first user profile includes an indication of exposure/engagement to the advertising content data.

In one embodiment, a continuity factor associated with a user profile may be determined. In various embodiments, continuity factors associated with user profiles may be used to select statistically significant user profiles. A continuity factor may indicate whether and/or to what extent a user was an active user (e.g., active in the system) prior to the time at which advertising content is served and/or after the advertising content has been served. A continuity factor, in some embodiments, may include a heart-beat indicator associated with the user. For example, if a user is determined to have been an active user on three separate days in the week prior to being served an advertisement for a location and three separate days after viewing the advertisement, the continuity factor for that user may be determined to be three. In various embodiments, the period of time prior to ad exposure and after ad exposure may be selected based on various factors associated with the advertising effectiveness calculation. The periods of time may, for example, be provided via user interface and/or other console from an advertiser.

In various embodiments, a continuity factor for a user profile may be generated based on location data from multiple mobile devices. For example, a user may be present at a location on a first day as determined by location information from a first device. After the first day the user may replace the first device with a second device. Subsequently the user may be determined to be present at the location based on location data from the second device. In this case, location information received from both devices may be included in a user profile for the user, and a continuity factor may be generated from the location data from both devices.

In one embodiment, it may be determined whether a continuity factor is above a threshold. In various embodiments, a threshold continuity factor may be set to, for example, one or any other value. A continuity factor greater than or equal to a threshold (e.g., one) may indicate that a user has been an active user before and after being served advertising content. This may indicate that the user profile is viable to be used in the propensity score calculation. In some embodiments, a continuity factor below a threshold (e.g., one) may indicate that the user was not present in the system prior to being served the advertisement. A user profile associated with a continuity factor below a threshold (e.g., one) may not be viable to be used in the propensity score calculation for purposes of evaluating the influence/effectiveness of advertising content data. In this case, the user may not be selected and the process may end.

In one embodiment, a user profile associated with a continuity factor above a threshold may be selected. In various embodiments, a user profile associated with a continuity factor value above a threshold may be selected as a test user profile (e.g., first user profile).

In one embodiment, propensity scores may be generated based on attribute data included in one or more user profiles. In some embodiments, a propensity score may represent a conditional probability of assignment to a particular treatment (e.g., exposure to the advertising content) given a set (e.g., vector) of observed covariates (e.g., attribute data including, for example, demographic attributes, behavioral attributes, psycho-graphic data, etc.). For example, a propensity score may represent a conditional probability of exposure to advertising content given a vector of attribute data (e.g., demographic data, behavioral data, psycho-graphic data, location visit frequency patterns, shopping cart spend data (e.g., including similar products and/or categories of products)).

In various embodiments, a propensity score associated with a user profile may be calculated by regressing the variable of whether or not the user has been exposed to advertising content against the attribute data included in the user profile. Using regression and/or other statistical approaches a model (e.g., generalized linear model (GLM), discreet choice model, etc.) may be generated representing a correlation between a dependent variable of whether or not a user has been exposed to advertising content and a set/vector of covariates including attribute data in the user profiles. In various embodiments, attribute data may be selected for inclusion in the set/vector of covariates to adjust for natural visit patterns, seasonal visit patterns, events, and/or other factors associated with the location of interest. The model (e.g., generalized linear model (GLM)) may be used to generate propensity scores for each of the multiple profiles. In some embodiments, the propensity score calculation process may account/compensate for natural visit patterns, seasonal visit patterns, events, and/or other factors associated with the location by virtue of the attribute data included in the propensity score calculation. For example, matching user profiles based on propensity score may reduce bias resulting natural visit patterns, seasonal visit patterns, events, and/or other factors.

In one embodiment, a first propensity score associated with the first user profile (e.g., a user profile in an exposed group) may be compared to one or more propensity scores each associated with a user profile in a control group (e.g., a group of user profiles for users not exposed to the ad content). In various embodiments, a first propensity score associated with the first user profile (e.g., a test group user profile) may be compared to one or more propensity scores to determine matching (e.g., closest/best matching) propensity scores.

In one embodiment, it may be determined whether a first propensity score matches one or more propensity scores. In some embodiments, a first propensity score may be compared to one or more propensity scores to determine a most-closely matching propensity score. In certain embodiments, nearest neighbor, kernel, local linear, caliper, and/or other matching techniques may be used to match the first propensity score to one or more propensity scores. In various embodiments, the first propensity score may be iteratively compared to multiple propensity scores to identify a most-closely matching propensity score. For example, a first propensity score (e.g., associated with a first user profile) may include a scalar value of 0.7, and this score may be compared to multiple propensity scores (e.g., 0.72, 0.65, 0.6, etc.) each associated with a user profile. Based on this example comparison, the propensity score of 0.72 may be selected as a most closely matching propensity score. In the event no propensity score is determined to match the first propensity score, the process may end.

In some embodiments, propensity scores may be matched based on a threshold and/or limit. For example, a first propensity score may match a second propensity score if the difference between the two propensity scores is within a threshold. For example, a first propensity score associated with a first user profile may include a scalar value of 0.35 and a second propensity score may include a scalar value of 0.3 and a threshold difference may be defined as 0.1. Because this difference between the first propensity score (e.g., 0.35) and second propensity score (e.g., 0.3) is less than the threshold (e.g., 0.1), the second propensity score may be determined to match (e.g., potentially match) the first propensity score.

In one embodiment, user profiles may be selected based on the matching propensity scores. In various embodiments, based on the propensity score matching process, the first user profile (e.g., including an indication of exposure to the advertising content) may be matched to a second user profile, and this pair of profiles may selected. Once selected, an advertising effectiveness value may be calculated for the pair of user profiles.

In an embodiment of a process of calculating behavior information, a first timeline depicts a first user's behavioral patterns relative to a location (e.g., a retail location, restaurant, etc.) over a period of time. Each observation of the user (e.g., point) on the timeline may represent a point in time at which the first user was observed at the location. As depicted in the first timeline, the first user may, for example, have been served advertising content (e.g., associated with the location) at an ad exposure time (e.g., time of ad exposure, t0, etc.). In some embodiments, a look-back period may include a period prior to the ad exposure time. A look-forward period may include a period after the ad exposure time. In some embodiments, the look-forward period and look-back period may include equal or different lengths/durations of time.

In some embodiments, first behavior information (e.g., associated with a user profile) may include a comparison of a first user's natural visit rate and post-advertising exposure visit rate (e.g., after exposure to the advertising content) to the location. A natural visit rate may include a number/frequency of user visits to the location over the look-back period. A post-exposure visit rate may include a number/frequency of visits to the location over the look-forward period after exposure to the advertising content. The first behavior information may include a difference (if any) between the first user's post-exposure visit rate and the natural visit rate.

In various embodiments, a second timeline is shown depicting a second user's behavioral patterns relative to a same location over a period of time. The second user in this case may not have been exposed to advertising content related to the location. In some embodiments, a look-back period for the second user may include a period prior to a point in time (e.g., a reference time). A look-forward period may include a period after the point in time. In various embodiments, the point in time (e.g., reference time) may be equivalent to the advertising exposure time (e.g., the same absolute time) at which the first user was exposed to the advertising content, another time determined based on the first and/or second user profile attributes, an arbitrary time, and/or any other time.

In some embodiments, the look-back period associated with the second user may be related to the look-back period associated with the first user. In one example, the two periods may span equivalent period(s) of time, though not necessarily the exact same period(s). For example, the first look-back period may include a first week (e.g., the last Wednesday in December to the first Wednesday in January, etc.), and the second look-back period may include (e.g., the first Saturday in February to the second Saturday in February). In another example, the first look-back period and second look-back period may span periods of time of varying duration. In various embodiments, similar relations maybe exist between the first look-forward period and second look-forward period.

In various embodiments, the look-back period, look-back period, look-forward period, look-forward period may be determined/selected based on input from a user of the advertising effectiveness platform, attributes associated with the first/second user profiles, and/or other parameters. In some embodiments, the look-back periods, and/or look-forward periods, may be selected to account/adjust for natural visit patterns, seasonal visit patterns, events (e.g., weather events, a sale at the location, etc.) associated with the location, and/or other factors that may influence/affect/skew the calculation of the advertising effectiveness value.

By way of example with reference to the first user timeline, a first user may be observed (e.g., via a mobile device) at a restaurant three times during the look-back period (e.g., as indicated by the three points on the timeline during the look-back period). The look-back period may include a one-week period prior to an ad exposure time of Jan. 1, 2014. The first user may have been shown advertising content related to the restaurant at the advertising exposure time (e.g., Jan. 1, 2014). And during the look-forward period including the two-week period after Jan. 1, 2014, the first user may be observed at the restaurant eight times. In this case, the first behavior information may include a difference between the first user's frequency of visits to the location during the look-back period—three times per week—and the first user's visit frequency during the look-forward period—four times per week. The first behavior information may include, for example, an increase of one visit per week, a 33.3% increase in visits per week, etc.

As depicted, for example, in the second user timeline, a second user may be observed at the restaurant (e.g., the same restaurant) four times during a second look-back period—the one-week period prior to Feb. 1, 2014. The second user may also be observed at the restaurant five times during a second look-forward period—the two weeks after Feb. 1, 2014. In this case, the second behavior information may include a difference between the second user's visit frequency to the location during the first look-back period—four visits per week—and the second user's visit frequency to the location during the second look-forward period—six visits over two weeks. The second behavior information may include, for example, a decrease of one visit of per week, a 25% decrease in visits per week, etc. In this case, the change in visit behavior after the reference time is negative (e.g., indicating a decrease). In certain cases, this negative value may be assumed to be the result from random behavioral patterns of the second user, and may be changed to zero indicating no change in behavior.

According to some embodiments, an advertising effectiveness value may be calculated based on the first behavior information and second behavior information. In this case the advertising effectiveness value may include a comparison between the first behavior information—an increase in one visit per week by the first user—and the second behavior information—a decrease of one visit per week by the second user. In this case, the advertising effectiveness value may include and incremental difference (e.g., incremental lift) of two visits per week. This value may indicate that exposure/interaction with the advertising content resulted in an increase visit frequency of two visits per week.

In one embodiment, two or more advertising effectiveness values may be generated. In various embodiments, a group of users including similar attributes may be selected to determine an effectiveness/influence of advertising content (e.g., in driving users to a retail location). For example, an advertiser associated with a quick service restaurant (QSR) chain may seek to quantify the value of an adverting campaign in driving foot traffic a QSR location. A group of user profiles identified as regular QSR patrons (e.g., known to visit the QSR location twice per week) may be selected. Within this group an exposed subgroup (e.g., exposed audience) of user profiles that include an indication of exposure to the advertising content may be identified. And a non-exposed subgroup of user profiles may be identified. Advertising effectiveness values may be generated using the techniques discussed herein. For example, user profiles from the exposed subgroup may be paired to similar user profiles from the non-exposed group, behavior information may be determined (e.g., numbers/frequencies of visits to the QSR location before and/or after advertisement exposure), and advertising effectiveness values may be generated based on the behavior information.

In one embodiment, aggregate effectiveness value(s) may be generated. In various embodiments, multiple advertising effectiveness values may be summed, aggregated, added together and/or otherwise combined to generate an aggregate advertising effectiveness value (e.g., a location conversion index). In various embodiments, an aggregate effectiveness value may include an advertising effectiveness value that has been updated based on other advertising effectiveness values. For example, two advertising effectiveness values may be merged/combined to generate a single advertising effectiveness value.

In various embodiments, advertising effectiveness values associated with any number of user profiles may be aggregated to generate the aggregate advertising effectiveness value. An aggregate advertising effectiveness value may represent an increase, decrease, and/or lack of change in a number of visits to retail location as a result of advertising content served to a defined group of users over a period of time. Continuing with the above example, the advertising effectiveness values generated based on the comparisons of the user profiles in the exposed subgroup and the users in the non-exposed subgroup of regular QSR patrons may be aggregated. For example, advertising effectiveness values may be generated for each user in the exposed subgroup and these values may be aggregated to generate an aggregate advertising effectiveness value across the group of regular QSR patrons. In one example, the aggregate advertising effectiveness value may, for example, indicate that the advertising campaign resulted in an increase of two visits per week per user who received the advertisement. In another example, the aggregate advertising effectiveness value may indicate a 25% increase in foot traffic to the QSR location over a defined period of time (e.g., one week before ad exposure compared to one week after ad exposure).

In various embodiments, advertising effectiveness values generated based on a comparison of user profiles exposed to advertising content and randomly-selected user profiles (e.g., not exposed to the ad content) may be included in an aggregate effectiveness value. For example, advertising effectiveness values may be generated based on comparisons of user profiles included in the exposed subgroup of male frequent QSR patrons to randomly-selected user profiles (e.g., not necessarily male frequent QSR patrons). These advertising effectiveness values may be added to an aggregate advertising effectiveness value, but may, for example, be given less weight in the aggregation.

In one embodiment, an aggregate advertising effectiveness value may be adjusted. In various embodiments, an aggregate advertising effectiveness value may be scaled, normalized, and/or otherwise adjusted. For example, advertising effectiveness value(s) may be scaled to a value within a range of values (e.g., 0 to 100), percentage(s), and/or other value(s).

In various embodiments, advertising effectiveness values may include adjustments for natural visit patterns, seasonal visit patterns, events, and/or other factors as a result of the matching processes (e.g., propensity score matching), look-back period determinations, look-forward period determinations, and/or other processes discussed herein. In some embodiments, however, an aggregate advertising effectiveness value (e.g., generated based on one or more advertising effectiveness values) may be adjusted (e.g., post-calculation) to account for natural visit patterns, seasonal visit patterns, events (e.g., current events, weather, etc.), and/or other factors affecting visit rates to a location. For example, an aggregate advertising effectiveness value reflecting ad campaign-driven visits to a retail location may be reduced to account for an increase in natural visits over the holiday season.

In one embodiment, a digital advertisement associated with a location may be generated. In various embodiments, a digital advertisement may include a coupon, a banner advertisement, a pop-up advertisement, embedded advertisement, and/or other promotional content associated with a location (e.g., aimed at driving foot traffic to the location). For example, a digital advertisement may include a coupon for a 20% discount on the purchase of a cup of coffee at a coffee shop.

In one embodiment, advertising effectiveness value(s) may be used to select users to receive the digital advertisement. In various embodiments, advertising effectiveness values may be used to select a type of user that would be most receptive to (e.g., most likely influenced by) the digital advertisement. Continuing with the example, an advertising effectiveness value may have been previously generated indicating that a coupon for a free muffin at the coffee shop resulted in an increased visit frequency of one visit per month among males, between 20-30 years old, with a median salary of $50,000 per year. Another advertising effectiveness value may have been generated indicating that a coupon for a 15% discount on purchase of coffee resulted in an increased visit frequency of two visits per week among males, between 40-50 years old, who regularly attend sporting events. Based on these advertising effectiveness values, user profiles associated with males, between 40-50 years, who are likely to attend sporting events may be selected to receive the digital advertisement.

In one embodiment, a digital advertisement may be provided to mobile device(s) associated with the selected user profiles. In various embodiments, providing digital advertisement to users in a group known to respond favorably to similar advertisement content may increase the return on investment of a mobile advertising campaign.

Further examples and details can be found in U.S. patent application Ser. No. 14/295,067, filed Jun. 3, 2014 and entitled “Measuring Advertising Effectiveness”, the entire disclosures of which application is hereby incorporated herein by references.

In general, the users having similar or same profiles, including demographic profile data, behavioral profile data, psycho-graphic profile data, purchase profile data, and/or location profile data, etc., can be grouped as similar users. The similar users can be organized into two groups. One of the two groups is provided with a predetermined content (e.g., an advertisement, an announcement, a notice, a TV program, a direct mail advertisement, etc.); and the other of the two group is not provided with the content. The subsequent user behaviors, such as location patterns, web visitation, service subscription, retail store visitation, etc., can be compared between the groups to identify the influence of the content. In some embodiments, the changes in the user behaviors of the same users before and after the time of the presentation of the content are identified; and the changes are compared between the groups to identify the influence of the content.

In some instances, different portions of data used in the computing of the effect of a communication/event are assembled from different databases controlled by different entities. For example, in determining the effect of an advertisement communication, or the event of presenting an advertisement in a media channel, such as television, the statuses of users receiving the communication and/or experiencing the event may be tracked in the computing system of one entity; and the patterns of visitation to a particular location, such as a physical retail store of a merchant promoted in the advertisement, may be tracked in the computing system of another entity. For privacy protections of its users, an entity in possession of personally identifiable information of certain users may be required to avoid disclosing the personally identifiable information to another entity during the integration of the data for the computation of the effect on visitation patterns.

For example, a database controlled by a first party/entity contains the status data indicating whether nor not a user received the communication and if so, the time of the communication to the user, while a separate database controlled by a second party/entity contains the location tracking data of the user.

One embodiment of the disclosure provides a data integration technique that allows the data from the separate databases to be combined for the evaluation of the effect of the communication/event on the location visitation pattern, while avoiding transmitting the status data across the parties in a personally identifiable way.

In one solution, the first party initially transmits a set of identifiers of users to the second party without providing the status data. Each of the identifiers identifies a particular user in a personally identifiable way (e.g., via a home address, a telephone number, an email address, a government issued identification number, a person identification number shared between the first party and the second party). The second party extracts from its database the location and attribute related data for the users individually identified by the set of identifiers of the user.

In some instances, the set of identifiers may include the identifiers of random users that may not even receive services from the first party and thus the second party cannot tell from the set of identifiers which user receives services from the first party and which user has received the communication (or has experienced the event) related to a location/region.

For enhanced privacy protection, the location data identified to the first party individually for the user identifiers initially provided by the first party can optionally be provided in an encrypted/hashed/obfuscated form such that the first party cannot decrypt the location data associated with the individual user identifiers. However, when the encrypted location data and attributes are returned to the second party (or a third party) in a non-personally identifiable way, the second party (or the third party) can decrypt them and use them in the evaluation of the influence on the visitation patterns.

In the solution, after receiving the location data for the individual user identifiers, the second party is configured to associate the status data of the individual users identified by the user identifiers with the respective location data for the individual users and then remove their association with the user identifiers to de-personalize the combined status data and the location data. The combined status and location data associates the status information and location information for each user individually and anonymously. Each user may be identified by a separate group of status information and location information, a random user identifier, or another unique identifier (e.g., a row identifier of a data record) that is not associated in a personally identifiable way to any of the set of user identifiers. Thus, the combined status and location data is de-personalized such that a particular set of status information and location information cannot be attributed to a particular user identified by one of the user identifies.

In general, the location data provided by the second party includes data for a plurality of data fields. Some of the data fields cannot be obfuscated by the first party in de-personalizing the combined status and location data, such as the location visitation patterns. Some of the data fields can be obfuscated by the first party, since these data fields are only used to find a match of users having similar profile attributes. Thus, the first party is configured in the solution to perform obfuscation operations on these data fields to prevent the data in these fields from being used to identify the user identifiers based on their association with the user identifiers in the initial location data transmitted from the second party to the first party.

Obfuscation operations that do not affect the matching of fields of the same values can be performed on the location data in the combined status and location data provided from the first party to the second party. For example, the values in the data fields can be scaled, padded, hashed, and/or encrypted to prevent the use of the values as a key to reverse look up the user identifier from the knowledge of the first party in the individual association between the location data and the user identifiers. Further, data can be taken from their respective data fields in the location data and placed by the first party in the fields different from their original fields in a way unknown to the second party to obfuscate the data. Furthermore, some of the data fields can be combined and/or transformed using one or more functions that map the same set of data to the same result. Thus, the changed data value cannot be used as a key to look up the user identifier, but can still be used to identify users having the same data items in these fields.

FIG. 23 shows a system to combine the data from different databases to measure the influence of an event with privacy protection according to one embodiment. The system of FIG. 23 can be used to implement the solution discussed above.

In FIG. 23, databases (401 and 403) are maintained by separate entities having separate computer systems connected to the databases (401 and 403) respectively. The status database (401) includes status data (427, . . . , 429) that shows the statuses of respective users with respect to an event (e.g., an advertisement, or exposure to an advertisement presented in a television program). The users are identified by the respective user identifiers (421, . . . , 423).

For example, the event may correspond to the exposure of a user to a piece of information relevant to a predetermined region, such as an advertisement presented to the user (e.g., via a television program) about a merchant having a retail store defined by a predetermined geographic boundary. The status data (427, . . . , 429) indicates whether or not the individual users identified by the respective user identifiers (421, . . . , 423) have exposure(s) to the advertisement and if so, the date and time of exposure(s).

In FIG. 23, the attribute database (403) includes attribute data (437, . . . , 439) includes the profile and location attributes of the users having the respective user identifiers (421, . . . , 423).

In FIG. 23, the system is configured to combine the data from the status database (401) and the attribute database (403) to determine effect of the event on the location patterns of the users, while protecting the privacy of the users by avoiding identifying, from the computing system of the status database (401) to the computing system of the attribute database (403), the individual association between the status data (427, . . . , 429) and the user identifiers (421, . . . , 423). In general, the computing system of the status database (401) is a computing system of an entity operating the status database (401); and the computing system of the status database (401) may or may not be responsible for direct operations on the status database (401). Similarly, the computing system of the attribute database (403) is generally a computing system of an entity operating the attribute database (403), separate from the entity operating the status database (401); and the computing system of the attribute database (403) may or may not be responsible for direct operations on attribute database (403).

In FIG. 23, the user identifiers (421, . . . , 423, and 431, . . . , 433) include personally identifier information that can be used on its own or with other information to identify, contact, or locate a single person, or to identify an individual in context, such as full name, home address, phone number, email address, and/or login name, etc. Thus, a user identifier (e.g., 421) in the status database (401) can be mapped to a user identifier (e.g., 431) in the attribute database (403).

In FIG. 23, an identifier list (409) is transmitted from the computing system of the status database (401) to the computing system of the attribute database (403). The identifier list (409) includes users identifies (e.g., 421, . . . , 423) that match the respective users to the computing system of the attribute database (403). However, no status data is provided with the identifier list (409) from the computing system of the status database (401) to the computing system of the attribute database (403).

The computing system of the attribute database (403) is configured to extract attributes (441, . . . , 443) from the attribute database (403) for users having the user identifiers (421, . . . , 423) communicated via the identifier list (409).

In some instances, to avoid disclosing the indication that a user identified in the identifier list (409) has received services from the computing system of the status database (401) (e.g., as a subscriber of the computing system of the status database (401)), the identifier list (409) may include the user identifiers of random users who did not receive services from the computing system of the status database (401) (e.g., non-subscribers).

In some instances, the identifier list (409) is transmitted from the computing system of the status database (401) to the computing system of the attribute database (403) with one or more parameters that can be used in extracting relevant attributes. For example, the identifier list (409) can be transmitted with an indication of a time instance of the advertisement. The indication of the time instance allows the computing system of the attribute database (403) to organize the location pattern data into location patterns before the time instance and location patterns after the time instance and thus reduces the amount of data to be transmitted in communication A (405).

In situations where different users may be exposed to the advertisement on different dates and/or times, multiple timestamps can be provided with the identifier list. Further, different sets of timestamps can be specified for different users. Some of the timestamps may not correspond to the actual time of a user receiving the advertisement and/or may be included for obfuscation (to avoid indication of which user has exposure and/or which user has enrolled for the service of the computing system of the status database (401)).

The attributes (441, . . . , 443) provided in communication from the computing system of the attribute database (403) to the computing system of the status database (401) can be encrypted/hashed/obfuscated to avoid revealing the details of the attributes to the computing system of the attribute database (403).

In FIG. 23, based on the user identifiers (421, . . . , 423) provided in the communication (405), the computing system of the status database (401) associates the status data (429, . . . , 427) of individual users with the attribute data (445, . . . , 447) of the respective users and generates the communication (407) by removing the indication of the user identifiers (e.g., 421) of the paired status data and attribute data.

For example, after pairing the status data (429) with the attribute data (445) for the user identifier (423), the computing system of the status database (401) removes the association between the user identifier (423) and the grouping of the status data (429) and the attribute data (445), indicating that the combined status data (429) and the attribute data (445) is for a distinct, anonymous user, separate from other anonymous users in the communication (407). For example, after pairing the status data (427) with the attribute data (447) for the user identifier (421), the computing system of the status database (401) removes the association between the user identifier (421) and the grouping of the status data (427) and the attribute data (447), indicating that the grouping of the status data (427) and the attribute data (447) is for a distinct, anonymous user, separate from other anonymous users in the communication (407). Thus, the status data (429, . . . , 427) and the attribute data (435, . . . , 447) are integrated for individual users at the user level without revealing the individual association between the user identifiers (e.g., 421, . . . , 423) and the respective status data (e.g., 427, . . . 429).

In FIG. 23, the attributes are provided in communication (407) in an order different from the order of attributes in the identifier list (409). After removing some users, the number of users represented in the communication (407) can be less than the number of users represented in the identifier list (409). The order of the users in the identifier list (409) can be adjusted in a way unknown to the computing system of the attribute database (403) to create the order of the users in the communication (407).

Further, the computing system of the status database (401) may perform obfuscation operations on some of the attributes (e.g., 443) to generate the attributes (e.g., 447) in the communication (407) that is sent from the computing system of the status database (401) for the analysis of the effect of the influence of the event on the location patterns of users.

In one embodiment, the attributes (441, . . . , 443) provided in the communication (405) includes two types of attributes: location pattern attributes, and profile attributes. The location pattern attributes will be further processed in analysis (411) to measure the influence of the event; and the profile attributes are provided used in locating users having the same or similar profiles. The computing system of the status database (401) of one embodiment is configured to perform obfuscation operations on the profile attributes without adjusting the location pattern attributes, as illustrated in FIG. 24.

For example, the computing system of the attribute database (403), or another system (e.g., a computing system of a third entity separated from the entity operating the attribute database (403) and the entity operating the status database (401)), decrypts the location pattern attributes to perform the analysis (411) of the influence of the event on the location patterns of the users to generate the result (413), by matching first users having experienced the event with second users having similar/matching profile attributes but having not experienced with the event. The changes of the location patterns of the first users before and after the event are compared with the corresponding changes of the location patterns of the corresponding second users having the similar/matching profile attributes and thus determine the influence of the event on the location patterns. For example, the methods of FIGS. 17-22 to determine the influence of an event can be used.

FIG. 24 shows an operation to obfuscate attribute data for privacy protection according to one embodiment.

In FIG. 24, the attributes are provided in communication (405) for a particular user in a plurality of fields (A-B, P-Q). A communication protocol is established between the computing systems to indicate that fields (A-B) cannot be obfuscated (e.g., for communicating the location pattern attributes) and fields (P-Q) can be obfuscated (e.g., for communicating the profile attributes).

In generating the partially obfuscated attributes in communication (407), the computing system of the status database (401) copies the attributes in fields (A-B) from the incoming communication (405) to the outgoing communication (407) without modification such that the computing apparatus can operate different fields (A-B) differently based on the identities of the attributes. In some embodiments, the non-obfuscated data fields (A-B) are combined (e.g., encrypted/scrambled) by the computing system of the attribute database (403) as a single field to be returned for decryption/de-scrambling.

In generating the partially obfuscated attributes in communication (407), the computing system of the status database (401) maps the attributes in fields (P-Q) from the incoming communication (405) to the outgoing communication (407) according to an attribute mapping scheme (465) that is unknown to the computing system of the attribute database (403). For example, an attribute Q (459) received in field Q in the incoming communication (405) may be placed instead in field P in the outgoing communication (407). Thus, the placement of the attributes in the outgoing communication (407) is scrambled from the placement of the attributes in the incoming communication (405). The scrambling operation prevents the use of the combinations of the attribute values as keys to look up the user identifiers (421) from the incoming communication (405).

Operationally, the mapping (465) of the obfuscation operation may include the combination of attributes from two or more fields in the incoming communication (405) into one field in the outgoing communication (407), splitting of an attribute from one fields in the incoming communication (405) into two or more fields in the outgoing communication (407), adding or subtracting a value to a field, scaling the value of a field, normalizing the values of a field, hashing the attributes using a one way hash function, applying a predetermined function to a field to transform its value, etc.

The obfuscation operation is performed in a way that is independent from the identities of the users having the attributes. Thus, two users having matching/similar profile attributes in the incoming communication (405) still have the matching/similar obfuscated profile attributes in the incoming communication (407).

Preferably, the non-obfuscated attributes (e.g., 451-453 in fields A-B) have limited unique instances in the outgoing communication (407) such that a combination of the non-obfuscated attributes (e.g., 451-453 in fields A-B) cannot be used as a key to look up a unique user identifier from the incoming communication (405).

For example, for each unique combination of values of the non-obfuscated attributes in the outgoing communication (407), the computing system of the status attribute counts the number of user identifiers that have the same unique combination of values in the incoming communication (405). If the counted number is larger than a threshold, the status data and attribute data corresponding to the unique combination of values are kept in the outgoing communication (407); otherwise, the status data and attribute data corresponding to the unique combination of values are removed from the outgoing communication (407) to protect the privacy of the user having the user identifiers that can be looked up from the incoming communication (405) using the unique combination of values as the key.

FIG. 25 shows a method to combine data from separate system to measure a change in location patterns according to one embodiment. For example, the method of FIG. 25 can be implemented in the system of FIG. 23 and optionally use the operation illustrated in FIG. 24.

In FIG. 25, a computing system is configured to: store (471) a set of cell identifiers for a plurality of geographical regions each having predefined geographical boundaries, each of the cell identifiers identifying a cell that is determined to be within a region defined by one of the predefined geographical boundaries and stored in association with the region; convert (473) the coordinates of the locations of the mobile devices into respective cell identifiers; determine (475) visitations of the mobile devices to the geographical regions as a function of time based on searching the set of cell identifiers to determine if the set has the respective cell identifiers; receive (477), from a separate device, a set of identifiers identifying the mobile devices respectively; communicate (479), to the separate device, attributes of the mobile devices, including the visitations, in associating with the identifiers respectively; communicate (481) back, from the separate device, status data associated with the attributes but disassociated from the identifiers; identify (483), by the computing device from the communication, attributes of a first subset of the mobile devices having a first status according to the status data and attributes of a second subset of the mobile devices having a second status according to the status data, based on a determination that the first subset of the mobile devices and the second subset of the mobile devices have similar patterns of visitation to the geographical regions prior to a time period; and measure (485) a difference, between the first subset of the mobile devices and the second subset of the mobile devices, in visitation patterns to the geographical regions after the time period.

FIGS. 24 and 25 shows the communication techniques to preserve the privacy of the users while integrating the attribute data and status data to evaluate the influence of an event or a piece of information on the behavior pattern users based on the difference in changes of the behavior patterns from before the event (or exposure to the information) to after the event (or exposure to the information). In the above discussed example, the behavior patterns are identified via visitation patterns tracked via the mobile devices of the users. However, the behavior patterns can be measured via other parameters, such as transaction frequency, transaction amount, purchase/sales amount or frequency, website visitations, etc. Thus, the computation of the influence is not limited to the attributes for the change in location patterns. The communication technique can be used to integrate the attribute data and status data for the determination of the influences measured from the changes in transaction frequency, transaction amount, purchase/sales amount or frequency, website visitations, etc. before and after the event (or exposure to the information) in users having similar profile attributes (e.g., demographic data, propensity data, psycho-graphic data).

FIG. 15 illustrates a data processing system according to one embodiment. While FIG. 15 illustrates various components of a computer system, it is not intended to represent any particular architecture or manner of interconnecting the components. One embodiment may use other systems that have fewer or more components than those shown in FIG. 15.

In FIG. 15, the data processing system (200) includes an inter-connect (201) (e.g., bus and system core logic), which interconnects one or more microprocessors (203) and memory (204). The microprocessor (203) is coupled to cache memory (209) in the example of FIG. 15.

In one embodiment, the inter-connect (201) interconnects the microprocessor(s) (203) and the memory (204) together and also interconnects them to input/output (I/O) device(s) (205) via I/O controller(s) (207). I/O devices (205) may include a display device and/or peripheral devices, such as mice, keyboards, modems, network interfaces, printers, scanners, video cameras and other devices known in the art. In one embodiment, when the data processing system is a server system, some of the I/O devices (205), such as touch screens, printers, scanners, mice, and/or keyboards, are optional.

In one embodiment, the inter-connect (201) includes one or more buses connected to one another through various bridges, controllers and/or adapters. In one embodiment the I/O controllers (207) include a USB (Universal Serial Bus) adapter for controlling USB peripherals, and/or an IEEE-1394 bus adapter for controlling IEEE-1394 peripherals.

In one embodiment, the memory (204) includes one or more of: ROM (Read Only Memory), volatile RAM (Random Access Memory), and non-volatile memory, such as hard drive, flash memory, etc.

Volatile RAM is typically implemented as dynamic RAM (DRAM) which requires power continually in order to refresh or maintain the data in the memory. Non-volatile memory is typically a magnetic hard drive, a magnetic optical drive, an optical drive (e.g., a DVD RAM), or other type of memory system which maintains data even after power is removed from the system. The non-volatile memory may also be a random access memory.

The non-volatile memory can be a local device coupled directly to the rest of the components in the data processing system. A non-volatile memory that is remote from the system, such as a network storage device coupled to the data processing system through a network interface such as a modem or Ethernet interface, can also be used.

In this description, some functions and operations are described as being performed by or caused by software code to simplify description. However, such expressions are also used to specify that the functions result from execution of the code/instructions by a processor, such as a microprocessor.

Alternatively, or in combination, the functions and operations as described here can be implemented using special purpose circuitry, with or without software instructions, such as using Application-Specific Integrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA). Embodiments can be implemented using hardwired circuitry without software instructions, or in combination with software instructions. Thus, the techniques are limited neither to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by the data processing system.

While one embodiment can be implemented in fully functioning computers and computer systems, various embodiments are capable of being distributed as a computing product in a variety of forms and are capable of being applied regardless of the particular type of machine or computer-readable media used to actually effect the distribution.

At least some aspects disclosed can be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM, volatile RAM, non-volatile memory, cache or a remote storage device.

Routines executed to implement the embodiments may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as “computer programs.” The computer programs typically include one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processors in a computer, cause the computer to perform operations necessary to execute elements involving the various aspects.

A machine readable medium can be used to store software and data which when executed by a data processing system causes the system to perform various methods. The executable software and data may be stored in various places including for example ROM, volatile RAM, non-volatile memory and/or cache. Portions of this software and/or data may be stored in any one of these storage devices. Further, the data and instructions can be obtained from centralized servers or peer to peer networks. Different portions of the data and instructions can be obtained from different centralized servers and/or peer to peer networks at different times and in different communication sessions or in a same communication session. The data and instructions can be obtained in entirety prior to the execution of the applications. Alternatively, portions of the data and instructions can be obtained dynamically, just in time, when needed for execution. Thus, it is not required that the data and instructions be on a machine readable medium in entirety at a particular instance of time.

Examples of computer-readable media include but are not limited to recordable and non-recordable type media such as volatile and non-volatile memory devices, read only memory (ROM), random access memory (RAM), flash memory devices, floppy and other removable disks, magnetic disk storage media, optical storage media (e.g., Compact Disk Read-Only Memory (CD ROM), Digital Versatile Disks (DVDs), etc.), among others. The computer-readable media may store the instructions.

The instructions may also be embodied in digital and analog communication links for electrical, optical, acoustical or other forms of propagated signals, such as carrier waves, infrared signals, digital signals, etc. However, propagated signals, such as carrier waves, infrared signals, digital signals, etc. are not tangible machine readable medium and are not configured to store instructions.

In general, a machine readable medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, network device, personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.).

In various embodiments, hardwired circuitry may be used in combination with software instructions to implement the techniques. Thus, the techniques are neither limited to any specific combination of hardware circuitry and software nor to any particular source for the instructions executed by the data processing system.

The description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding. However, in certain instances, well known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure are not necessarily references to the same embodiment; and, such references mean at least one.

The use of headings herein is merely provided for ease of reference, and shall not be interpreted in any way to limit this disclosure or the following claims.

Reference to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, and are not necessarily all referring to separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by one embodiment and not by others. Similarly, various requirements are described which may be requirements for one embodiment but not other embodiments. Unless excluded by explicit description and/or apparent incompatibility, any combination of various features described in this description is also included here. For example, the features described above in connection with “in one embodiment” or “in some embodiments” can be all optionally included in one implementation, except where the dependency of certain features on other features, as apparent from the description, may limit the options of excluding selected features from the implementation, and incompatibility of certain features with other features, as apparent from the description, may limit the options of including selected features together in the implementation.

In the foregoing specification, the disclosure has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. 

What is claimed is:
 1. A method implemented in a computing device, the method comprising: storing, in the computing device, a set of cell identifiers for a plurality of geographical regions each having predefined geographical boundaries, each of the cell identifiers identifying a cell that is determined to be within a region defined by one of the predefined geographical boundaries and stored in association with the region; receiving coordinates of locations of a plurality of mobile devices as a function of time; computing, by the computing device, visitation data representing visitations of the mobile devices to the geographical regions as a function of time by: converting the coordinates of the locations of the mobile devices into respective cell identifiers; and searching, in the set of cell identifiers, the respective cell identifiers to determine respective geographical regions that contain the locations of the mobile devices corresponding to the respective cell identifiers; receiving, by the computing device from a separate device, a set of mobile device identifiers; retrieving, by the computing device and from the visitation data of the plurality of mobile devices, visitation data of selected mobile devices that are identified by the set of mobile device identifiers; transmitting, by the computing device to the separate device, a first data set associating the visitation data of the selected mobile devices with respective mobile device identifiers of the selected mobile devices, the transmitting of the first data set causing the separate device to generate a second data set by: associating status data of the selected mobile devices with the visitation data of the selected mobile devices; and disassociating the mobile device identifiers of the selected mobile devices from the status data provided in the second data; receiving, by the computing device from the separate device, the second data set containing the status data of the selected mobile devices and the visitation data of the mobile devices but having no indication of respective association between the mobile device identifiers of the selected mobile devices and the status data of the selected mobile devices; identifying, by the computing device from the second data set: visitation data of a first subset of the selected mobile devices having a first status identified by the status data; and visitation data of a second subset of the selected mobile devices having a second status identified by the status data, wherein the first and second subsets of mobile devices have matching patterns of visitation to the geographical regions prior to a time period; and measuring, by the computing device, a difference, between the first subset of the selected mobile devices and the second subset of the selected mobile devices, in visitation patterns to the geographical regions after the time period.
 2. The method of claim 1, wherein converting of each respective set of coordinates of the locations of the first mobile device into a respective cell identifier includes: generating two integers from longitude and latitude coordinates of the respective set of coordinates according to a precision level; and combining the two integers into the respective cell identifier without using a floating point number computation.
 3. The method of claim 2, wherein a cell identified by the respective cell identifier is a rectangle area in a longitude latitude space of locations on the earth; a size of the cell identified by the respective cell identifier is defined by the respective cell identifier; and longitude and latitude coordinates of a corner of the cell identified by the respective cell identifier are defined by the respective cell identifier.
 4. The method of claim 2, wherein if the respective cell identifier is in the set of cell identifiers stored for a particular geographical region, a location identified by the respective set of coordinates is determined to be within the particular geographical region; and if the respective cell identifier is not in the set of cell identifiers stored for the particular geographical region, the location identified by the respective set of coordinates is determined to be outside of the particular geographical region.
 5. The method of claim 2, wherein a cell identified by the respective cell identifier is a square area in a longitude latitude space of locations on the earth; cells identified by the set of cell identifiers have a plurality of cell sizes corresponding to a plurality of predetermined cell resolution levels; and each cell resolution level of the plurality of predetermined cell resolution levels corresponds to a precision represented by a predetermined digit after the decimal point in longitude and latitude coordinates of locations on the earth.
 6. The method of claim 1, wherein association between the status data and the visitation data provided in the second data set is insufficient for the computing device to associate the status data individually with mobile device identifiers of the selected mobile devices.
 7. The method of claim 1, wherein the second data set contains no personally identifiable information
 8. A computing device, comprising: at least one microprocessor; and memory storing instructions configured to instruct the at least one microprocessor to: receive, in the computing device, locations of a plurality of mobile devices as a function of time; compute, by the computing device from the locations, visitation data representing visitations of the mobile devices to a predetermined geographical region as a function of time; receive, by the computing device from a separate device, a set of mobile device identifiers; retrieve, by the computing device and from the visitation data of the plurality of mobile devices, visitation data of selected mobile devices that are identified by the set of mobile device identifiers; transmit, by the computing device to the separate device, a first data set associating the visitation data of the selected mobile devices with respective mobile device identifiers of the selected mobile devices, the first data set causing the separate device to generate a second data set by: associating status data of the selected mobile devices with the visitation data of the selected mobile devices; and disassociating the mobile device identifiers of the selected mobile devices from the status data provided in the second data; receive, by the computing device from the separate device, the second data set containing the status data of the selected mobile devices and the visitation data of the mobile devices but having no indication of individual associations between the mobile device identifiers of the selected mobile devices and the status data of the selected mobile devices; identify, by the computing device from the second data set: visitation data of a first subset of the selected mobile devices having a first status identified by the status data; and visitation data of a second subset of the selected mobile devices having a second status identified by the status data, wherein the first and second subsets of mobile devices have matching patterns of visitation to the predetermined geographical region prior to a time period; and measure, by the computing device, a difference, between the first subset of the selected mobile devices and the second subset of the selected mobile devices, in visitation patterns to the predetermined geographical region after the time period.
 9. The computing device of claim 8, wherein the memory further stores a set of cell identifiers for a plurality of predetermined geographical regions each having predefined geographical boundaries, each of the cell identifiers identifying a cell that is determined to be within a respective region defined by one of the predetermined geographical boundaries and stored in association with the respective region; and the instructions configured to instruct the at least one microprocessor to compute visitation data from coordinates of the locations by: converting the coordinates of the locations into respective cell identifiers; and searching, in the set of cell identifiers, the respective cell identifiers to determine respective geographical regions that contain the locations of the mobile devices corresponding to the respective cell identifiers.
 10. The computing device of claim 8, wherein the first status, as associated with the first subset, indicates that mobile devices in the first subset are associated with an event; and the second status, as associated with the second subset, indicates that mobile devices in the second subset are not associated with the event.
 11. The computing device of claim 10, wherein the time period is before the event.
 12. The computing device of claim 11, wherein the difference as measured represents a measurement of influence of the event.
 13. The computing device of claim 12, wherein the event includes transmitting of information relevant to the predetermined geographical region to mobile devices.
 14. The computing device of claim 11, wherein the first and second subsets of mobile devices are identified to have matching first profile attributes; and the first data set includes the first profile attributes.
 15. The computing device of claim 14, wherein the visitation data provided in the first data set is in an encrypted form, decryptable by the computing device but not by the separate device; and the visitation data provided in the first data set is returned to the computing device in the second data set without changes.
 16. A non-transitory computer storage medium storing instructions configured to instruct a computing device to perform a method, the method comprising: transmitting, by the computing device to a separate device, a set of mobile device identifiers to cause the separate device to: retrieve, visitation data of selected mobile devices that are identified by the set of mobile device identifiers, the visitation data representing visitations of the selected mobile devices to a predetermined geographical region as a function of time; and transmit, to the computing device, a first data set associating the visitation data of the selected mobile devices with respective mobile device identifiers of the selected mobile devices; receiving, in the computing device from the separate device, the first data set; generating, by the computing device from the first data set, a second data set by: associating status data of the selected mobile devices with the visitation data of the selected mobile devices; and disassociating the mobile device identifiers of the selected mobile devices from the status data provided in the second data; transmitting, by the computing device to the separate device, the second data set containing the status data of the selected mobile devices and the visitation data of the mobile devices but having no indication of respective association between the mobile device identifiers of the selected mobile devices and the status data of the selected mobile devices, the second data set causing the separate device to: identify, from the second data set: visitation data of a first subset of the selected mobile devices having a first status identified by the status data; and visitation data of a second subset of the selected mobile devices having a second status identified by the status data, wherein the first and second subsets of mobile devices have matching patterns of visitation to the predetermined geographical region prior to a time period; and measure a difference, between the first subset of the selected mobile devices and the second subset of the selected mobile devices, in visitation patterns to the predetermined geographical region after the time period; and receiving, by the computing device, the difference measured by the separate device.
 17. The non-transitory computer storage medium of claim 16, wherein the first and second subsets of mobile devices are identified to have matching first profile attributes; and the first data set includes the first profile attributes; and the instructions configured to instruct the computing device to: computing second profile attributes from the first profile attributes; replacing the first profile attributes provided in the first data set with the second profile attributes in generating the second data set.
 18. The non-transitory computer storage medium of claim 17, wherein the first and second subsets of mobile devices are identified to have matching first profile attributes based on matching the second profile attributes.
 19. The non-transitory computer storage medium of claim 17, wherein the second profile attributes are computed from the first profile attributes in a way unknown to the separate device.
 20. The non-transitory computer storage medium of claim 16, wherein the first status, as associated with the first subset, indicates that mobile devices in the first subset are associated with an event; the second status, as associated with the second subset, indicates that mobile devices in the second subset are not associated with the event; and the difference as measured represents a measurement of influence of the event. 